diff --git a/config/functions b/config/functions
index 4aed9c4895..d65763f775 100644
--- a/config/functions
+++ b/config/functions
@@ -10,24 +10,6 @@ die() {
exit "${2:-1}"
}
-# p1: name of potential function to execute if it exists
-# return 0 if function executed, 1 if not, die if error
-pkg_call() {
- [ -n "${PKG_NAME}" ] || die "$(print_color CLR_ERROR "FAILURE: Cannot call ${1} package function when package is not known!")"
-
- if [ "$(type -t ${1})" = "function" ]; then
- ${1} || die "$(print_color CLR_ERROR "FAILURE: ${1} for package ${PKG_NAME} did not succeed!")"
- else
- return 1
- fi
-}
-
-# p1: name of potential function to execute if it exists
-# return 0 if function executed or not, or die if error
-pkg_call_optional() {
- pkg_call ${1} || return 0
-}
-
# return 0 if $2 in space-separated list $1, otherwise return 1
listcontains() {
if [ -n "$1" -a -n "$2" ]; then
@@ -687,8 +669,7 @@ do_autoreconf() {
get_pkg_variable() {
if [ -n "$1" -a -n "$2" ] ; then
if [ "$1" != "$PKG_NAME" ]; then
- cd $ROOT
- . config/options $1 &>/dev/null
+ source_package "${1}"
fi
echo "${!2}"
fi
@@ -811,6 +792,126 @@ find_dir_path() {
find_path -d "$1" "$2"
}
+# p1: name of potential function to execute if it exists
+# return 0 if function executed, 1 if not, die if error
+pkg_call() {
+ [ -n "${PKG_NAME}" ] || die "$(print_color CLR_ERROR "FAILURE: Cannot call ${1} package function when package is not known!")"
+
+ if [ "$(type -t ${1})" = "function" ]; then
+ ${1} || die "$(print_color CLR_ERROR "FAILURE: ${1} for package ${PKG_NAME} did not succeed!")"
+ else
+ return 1
+ fi
+}
+
+# p1: name of potential function to execute if it exists
+# return 0 if function executed or not, or die if error
+pkg_call_optional() {
+ pkg_call ${1} || return 0
+}
+
+unset_functions() {
+ local target
+
+ unset -f configure_package
+
+ unset -f pre_unpack unpack post_unpack
+ unset -f pre_patch post_patch
+
+ for target in target host init bootstrap; do
+ unset -f pre_build_${target}
+ unset -f pre_configure_${target} configure_${target} post_configure_${target}
+ unset -f pre_make_${target} make_${target} post_make_${target}
+ unset -f pre_makeinstall_${target} makeinstall_${target} post_makeinstall_${target}
+ done
+
+ unset -f pre_install post_install
+
+ unset -f addon
+}
+
+# p1: name of package to be sourced
+source_package() {
+ local opwd="${PWD}"
+
+ # Don't use BUILD_WITH_DEBUG in "global" package.mk - instead, call the function
+ # build_with_debug() directly as the function depends on various package.mk
+ # variables that will be in the process of being configured. Once package.mk is
+ # fully sourced we can set this variable and use it in situations where we know the
+ # package has already been sourced.
+ unset BUILD_WITH_DEBUG
+
+ reset_pkg_vars
+ unset_functions
+
+ if [ -n "${1}" ]; then
+ PKG_DIR="$(get_pkg_directory ${1})"
+
+ [ -n "$PKG_DIR" -a -r $PKG_DIR/package.mk ] || die "FAILURE: unable to source package - ${1}/package.mk does not exist"
+
+ cd "${ROOT}"
+ . ${PKG_DIR}/package.mk || die "FAILURE: an error occurred while sourcing ${PKG_DIR}/package.mk"
+ cd "${opwd}"
+
+ PKG_SHORTDESC="${PKG_SHORTDESC:-${PKG_NAME} (autogenerated)}"
+ PKG_LONGDESC="${PKG_LONGDESC:-${PKG_NAME} (autogenerated)}"
+
+ if [ "$PKG_IS_ADDON" = "yes" -o "$PKG_IS_ADDON" = "embedded" ] ; then
+ [ -z $PKG_SECTION ] && PKG_ADDON_ID="$PKG_NAME" || PKG_ADDON_ID="${PKG_SECTION//\//.}.$PKG_NAME"
+ [ "$PKG_ADDON_IS_STANDALONE" != "yes" ] && PKG_NEED_UNPACK="${PKG_NEED_UNPACK} $(get_pkg_directory $MEDIACENTER)"
+ fi
+
+ # Automatically set PKG_SOURCE_NAME unless it is already defined.
+ # PKG_SOURCE_NAME will be automatically set to a name based on
+ # the $PKG_NAME-$PKG_VERSION convention.
+ #
+ # Any $PKG_URL that references more than a single url will abort
+ # the build as these are no longer supported - use mkpkg instead.
+ if [ -n "$PKG_URL" -a -z "$PKG_SOURCE_NAME" ]; then
+ if [[ $PKG_URL =~ .*\ .* ]]; then
+ echo "Error - packages with multiple urls are no longer supported, use mkpkg."
+ echo "$PKG_URL"
+ die
+ fi
+ if [[ ${PKG_URL} =~ .git$ || ${PKG_URL} =~ ^git:// ]]; then
+ PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}
+ elif [[ ${PKG_URL} =~ ^file:// ]]; then
+ PKG_SOURCE_NAME=${PKG_URL#file://}
+ # if no specific PKG_TAR_COPY_OPTS then default to excluding .git and .svn as they can be huge
+ [ -z "${PKG_TAR_COPY_OPTS+x}" ] && PKG_TAR_COPY_OPTS="--exclude=.git --exclude=.svn"
+ else
+ PKG_SOURCE_NAME="${PKG_URL##*/}"
+ case $PKG_SOURCE_NAME in
+ ${PKG_NAME}-${PKG_VERSION}.*)
+ PKG_SOURCE_NAME=$PKG_SOURCE_NAME
+ ;;
+ *.tar | *.tbz | *.tgz | *.txz | *.7z | *.zip)
+ PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}.${PKG_SOURCE_NAME##*\.}
+ ;;
+ *.tar.bz2 | *.tar.gz | *.tar.xz)
+ PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}.tar.${PKG_SOURCE_NAME##*\.}
+ ;;
+ *.diff | *.patch | *.diff.bz2 | *.patch.bz2 | patch-*.bz2 | *.diff.gz | *.patch.gz | patch-*.gz)
+ PKG_SOURCE_NAME=$PKG_SOURCE_NAME
+ ;;
+ *)
+ PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}.${PKG_SOURCE_NAME##*\.}
+ ;;
+ esac
+ fi
+ fi
+
+ PKG_BUILD="$BUILD/${PKG_NAME}-${PKG_VERSION}"
+ fi
+
+ build_with_debug && BUILD_WITH_DEBUG="yes" || BUILD_WITH_DEBUG="no"
+
+ # Late variable binding - allow the package to now evaluate any variables
+ # that we may have initialised after sourcing the package, typically
+ # PKG_BUILD etc.
+ [ -n "${PKG_NAME}" ] && pkg_call_optional configure_package || true
+}
+
### KERNEL HELPERS ###
kernel_path() {
diff --git a/config/options b/config/options
index ea0a375dd5..53196342bf 100644
--- a/config/options
+++ b/config/options
@@ -94,3 +94,11 @@ check_config
. config/graphic
. config/path $1
+
+## package processing
+
+# If the package caches are unset, then populate them
+init_package_cache
+
+# set package metadata
+source_package "${1}"
diff --git a/config/path b/config/path
index f16f18e7e1..1f1080b53c 100644
--- a/config/path
+++ b/config/path
@@ -1,3 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
+
set -e
# setup initial directorys (relative to root)
@@ -59,79 +62,6 @@ INSTALL_INIT=$BUILD/image/initramfs/root-image
MAKE="$TOOLCHAIN/bin/make"
MAKEINSTALL="$TOOLCHAIN/bin/make -j1 DESTDIR=$SYSROOT_PREFIX install"
-unset LD_LIBRARY_PATH
-
-# Don't use BUILD_WITH_DEBUG in "gloabl" package.mk - instead, call the function
-# build_with_debug() directly as the function depends on various package.mk
-# variables that will be in the process of being configured. Once package.mk is
-# fully sourced we can set this variable and use it in situations where we know the
-# package has already been sourced.
-unset BUILD_WITH_DEBUG
-
-# If the package caches are unset, then populate them
-init_package_cache
-
-# set package metadata
-reset_pkg_vars "$1"
-
-[ -n "$1" ] && PKG_DIR="$(get_pkg_directory $1)"
-
-if [ -n "$PKG_DIR" -a -r $PKG_DIR/package.mk ]; then
- unset -f configure_package
- . $PKG_DIR/package.mk
- [ -z "$PKG_SHORTDESC" ] && PKG_SHORTDESC="$PKG_NAME (autogenerated)"
- [ -z "$PKG_LONGDESC" ] && PKG_LONGDESC="$PKG_NAME (autogenerated)"
-fi
-
-if [ "$PKG_IS_ADDON" = "yes" -o "$PKG_IS_ADDON" = "embedded" ] ; then
- [ -z $PKG_SECTION ] && PKG_ADDON_ID="$PKG_NAME" || PKG_ADDON_ID="${PKG_SECTION//\//.}.$PKG_NAME"
- [ "$PKG_ADDON_IS_STANDALONE" != "yes" ] && PKG_NEED_UNPACK="${PKG_NEED_UNPACK} $(get_pkg_directory $MEDIACENTER)"
-fi
-
-# Automatically set PKG_SOURCE_NAME unless it is already defined.
-# PKG_SOURCE_NAME will be automatically set to a name based on
-# the $PKG_NAME-$PKG_VERSION convention.
-#
-# Any $PKG_URL that references more than a single url will abort
-# the build as these are no longer supported - use mkpkg instead.
-if [ -n "$PKG_URL" -a -z "$PKG_SOURCE_NAME" ]; then
- if [[ $PKG_URL =~ .*\ .* ]]; then
- echo "Error - packages with multiple urls are no longer supported, use mkpkg:"
- echo "$PKG_URL"
- exit 1
- fi
- if [[ ${PKG_URL} =~ .git$ || ${PKG_URL} =~ ^git:// ]]; then
- PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}
- elif [[ ${PKG_URL} =~ ^file:// ]]; then
- PKG_SOURCE_NAME=${PKG_URL#file://}
- # if no specific PKG_TAR_COPY_OPTS then default to excluding .git and .svn as they can be huge
- [ -z "${PKG_TAR_COPY_OPTS+x}" ] && PKG_TAR_COPY_OPTS="--exclude=.git --exclude=.svn"
- else
- PKG_SOURCE_NAME="${PKG_URL##*/}"
- case $PKG_SOURCE_NAME in
- ${PKG_NAME}-${PKG_VERSION}.*)
- PKG_SOURCE_NAME=$PKG_SOURCE_NAME
- ;;
- *.tar | *.tbz | *.tgz | *.txz | *.7z | *.zip)
- PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}.${PKG_SOURCE_NAME##*\.}
- ;;
- *.tar.bz2 | *.tar.gz | *.tar.xz)
- PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}.tar.${PKG_SOURCE_NAME##*\.}
- ;;
- *.diff | *.patch | *.diff.bz2 | *.patch.bz2 | patch-*.bz2 | *.diff.gz | *.patch.gz | patch-*.gz)
- PKG_SOURCE_NAME=$PKG_SOURCE_NAME
- ;;
- *)
- PKG_SOURCE_NAME=${PKG_NAME}-${PKG_VERSION}.${PKG_SOURCE_NAME##*\.}
- ;;
- esac
- fi
-fi
-
-PKG_BUILD="$BUILD/${PKG_NAME}-${PKG_VERSION}"
-
-build_with_debug && BUILD_WITH_DEBUG="yes" || BUILD_WITH_DEBUG="no"
-
XORG_PATH_DRI=/usr/lib/dri
XORG_PATH_XKB=/usr/share/X11/xkb
XORG_PATH_XKB_OUTPUT=/var/lib/xkb
@@ -151,22 +81,23 @@ fi
VERSION_SUFFIX=$TARGET_ARCH
-SILENT_OUT=3
-VERBOSE_OUT=4
-if [ "$VERBOSE" = yes ]; then
- exec 3>&1
- exec 4>&2
-else
- exec 3>&2
- exec 4>/dev/null
-fi
-BUILD_INDENT_SIZE=4
+# redirect formatted output
+if [ -z "${SILENT_OUT}" -a -z "${VERBOSE_OUT}" ]; then
+ export BUILD_INDENT_SIZE=4
+ export SILENT_OUT=3
+ export VERBOSE_OUT=4
-# If sourcing a package, configure any package variables dependent on variables we have set
-if [ -n "$PKG_DIR" -a -r $PKG_DIR/package.mk ]; then
- pkg_call_optional configure_package
+ if [ "$VERBOSE" = yes ]; then
+ exec 3>&1
+ exec 4>&2
+ else
+ exec 3>&2
+ exec 4>/dev/null
+ fi
fi
+unset LD_LIBRARY_PATH
+
# multilib? nah
unset CONFIG_SITE
diff --git a/packages/addons/addon-depends/chrome-depends/icu/package.mk b/packages/addons/addon-depends/chrome-depends/icu/package.mk
index bdeadd739a..d4ccf8c3a1 100644
--- a/packages/addons/addon-depends/chrome-depends/icu/package.mk
+++ b/packages/addons/addon-depends/chrome-depends/icu/package.mk
@@ -18,15 +18,16 @@ PKG_ICU_OPTS="--disable-extras \
--disable-tests \
--disable-tools"
-
PKG_CONFIGURE_OPTS_HOST="--enable-static \
--disable-shared \
$PKG_ICU_OPTS"
-PKG_CONFIGURE_OPTS_TARGET="--with-cross-build=$PKG_BUILD/.$HOST_NAME \
- $PKG_ICU_OPTS"
+configure_package() {
+ PKG_CONFIGURE_OPTS_TARGET="--with-cross-build=$PKG_BUILD/.$HOST_NAME \
+ $PKG_ICU_OPTS"
-PKG_CONFIGURE_SCRIPT="source/configure"
+ PKG_CONFIGURE_SCRIPT="${PKG_BUILD}/source/configure"
+}
post_makeinstall_target() {
rm -rf $INSTALL
diff --git a/packages/addons/addon-depends/multimedia-tools-depends/opencaster/package.mk b/packages/addons/addon-depends/multimedia-tools-depends/opencaster/package.mk
index 288c17cae0..0a76f4e798 100644
--- a/packages/addons/addon-depends/multimedia-tools-depends/opencaster/package.mk
+++ b/packages/addons/addon-depends/multimedia-tools-depends/opencaster/package.mk
@@ -10,7 +10,9 @@ PKG_URL="http://ftp.de.debian.org/debian/pool/main/o/opencaster/opencaster_${PKG
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="A free and open source MPEG2 transport stream data generator and packet manipulator."
-PKG_MAKE_OPTS_TARGET="CC=$CC"
+pre_configure_target() {
+ PKG_MAKE_OPTS_TARGET="CC=$CC"
+}
pre_makeinstall_target() {
mkdir -p $PKG_BUILD/.install_pkg
diff --git a/packages/addons/addon-depends/protobuf/package.mk b/packages/addons/addon-depends/protobuf/package.mk
index d4d26bb825..290734ff7f 100644
--- a/packages/addons/addon-depends/protobuf/package.mk
+++ b/packages/addons/addon-depends/protobuf/package.mk
@@ -11,8 +11,6 @@ PKG_DEPENDS_HOST="toolchain zlib:host"
PKG_DEPENDS_TARGET="toolchain zlib protobuf:host"
PKG_LONGDESC="Protocol Buffers for Google's data interchange format."
-PKG_CMAKE_SCRIPT="$PKG_BUILD/cmake/CMakeLists.txt"
-
PKG_CMAKE_OPTS_HOST="-DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
-DBUILD_SHARED_LIBS=0 \
-Dprotobuf_BUILD_TESTS=0 \
@@ -21,6 +19,10 @@ PKG_CMAKE_OPTS_HOST="-DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_HOST"
+configure_package() {
+ PKG_CMAKE_SCRIPT="$PKG_BUILD/cmake/CMakeLists.txt"
+}
+
post_makeinstall_target() {
rm -rf $INSTALL/usr/bin
diff --git a/packages/addons/addon-depends/system-tools-depends/getscancodes/package.mk b/packages/addons/addon-depends/system-tools-depends/getscancodes/package.mk
index 07a859b790..98de97ea41 100644
--- a/packages/addons/addon-depends/system-tools-depends/getscancodes/package.mk
+++ b/packages/addons/addon-depends/system-tools-depends/getscancodes/package.mk
@@ -10,7 +10,9 @@ PKG_URL="$SOURCEFORGE_SRC/keytouch/getscancodes-${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="Shows the scancode of the pressed or released key."
-PKG_MAKE_OPTS_TARGET="CC=$CC"
+pre_configure_target() {
+ PKG_MAKE_OPTS_TARGET="CC=$CC"
+}
makeinstall_target() {
: # nop
diff --git a/packages/addons/addon-depends/system-tools-depends/lm_sensors/package.mk b/packages/addons/addon-depends/system-tools-depends/lm_sensors/package.mk
index ba1ab31ade..0840026316 100644
--- a/packages/addons/addon-depends/system-tools-depends/lm_sensors/package.mk
+++ b/packages/addons/addon-depends/system-tools-depends/lm_sensors/package.mk
@@ -11,10 +11,11 @@ PKG_URL="https://github.com/groeck/lm-sensors/archive/${PKG_VERSION}.tar.gz"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="Provides user-space support for the hardware monitoring drivers."
-PKG_MAKE_OPTS_TARGET="PREFIX=/usr CC=$CC AR=$AR"
PKG_MAKEINSTALL_OPTS_TARGET="PREFIX=/usr"
pre_make_target() {
+ PKG_MAKE_OPTS_TARGET="PREFIX=/usr CC=$CC AR=$AR"
+
export CFLAGS="$TARGET_CFLAGS"
export CPPFLAGS="$TARGET_CPPFLAGS"
}
diff --git a/packages/addons/service/net-snmp/package.mk b/packages/addons/service/net-snmp/package.mk
index e9522e6752..5f4fd2abdf 100644
--- a/packages/addons/service/net-snmp/package.mk
+++ b/packages/addons/service/net-snmp/package.mk
@@ -19,7 +19,8 @@ PKG_IS_ADDON="yes"
PKG_ADDON_NAME="Net-SNMP"
PKG_ADDON_TYPE="xbmc.service"
-PKG_CONFIGURE_OPTS_TARGET="--with-defaults \
+configure_package() {
+ PKG_CONFIGURE_OPTS_TARGET="--with-defaults \
--disable-applications \
--disable-manuals \
--disable-debugging \
@@ -40,6 +41,7 @@ PKG_CONFIGURE_OPTS_TARGET="--with-defaults \
--libdir=/storage/.kodi/addons/${PKG_ADDON_ID}/lib \
--disable-embedded-perl \
--with-sysroot=$SYSROOT_PREFIX"
+}
make_target() {
make
diff --git a/packages/addons/service/tvheadend42/package.mk b/packages/addons/service/tvheadend42/package.mk
index 1a3b855cd9..df63d8ee88 100644
--- a/packages/addons/service/tvheadend42/package.mk
+++ b/packages/addons/service/tvheadend42/package.mk
@@ -46,37 +46,37 @@ if [[ "$TARGET_ARCH" != "x86_64" ]]; then
--disable-libx265"
fi
-PKG_CONFIGURE_OPTS_TARGET="--prefix=/usr \
- --arch=$TARGET_ARCH \
- --cpu=$TARGET_CPU \
- --cc=$CC \
- $PKG_TVH_TRANSCODING \
- --enable-avahi \
- --enable-bundle \
- --disable-dbus_1 \
- --enable-dvbcsa \
- --enable-dvben50221 \
- --disable-dvbscan \
- --enable-hdhomerun_client \
- --disable-hdhomerun_static \
- --enable-epoll \
- --enable-inotify \
- --enable-pngquant \
- --disable-libmfx_static \
- --disable-nvenc \
- --disable-uriparser \
- --enable-tvhcsa \
- --enable-trace \
- --nowerror \
- --disable-bintray_cache \
- --python=$TOOLCHAIN/bin/python"
-
post_unpack() {
sed -e 's/VER="0.0.0~unknown"/VER="'$PKG_VERSION_NUMBER' ~ LibreELEC Tvh-addon v'$ADDON_VERSION'.'$PKG_REV'"/g' -i $PKG_BUILD/support/version
sed -e 's|'/usr/bin/pngquant'|'$TOOLCHAIN/bin/pngquant'|g' -i $PKG_BUILD/support/mkbundle
}
pre_configure_target() {
+ PKG_CONFIGURE_OPTS_TARGET="--prefix=/usr \
+ --arch=$TARGET_ARCH \
+ --cpu=$TARGET_CPU \
+ --cc=$CC \
+ $PKG_TVH_TRANSCODING \
+ --enable-avahi \
+ --enable-bundle \
+ --disable-dbus_1 \
+ --enable-dvbcsa \
+ --enable-dvben50221 \
+ --disable-dvbscan \
+ --enable-hdhomerun_client \
+ --disable-hdhomerun_static \
+ --enable-epoll \
+ --enable-inotify \
+ --enable-pngquant \
+ --disable-libmfx_static \
+ --disable-nvenc \
+ --disable-uriparser \
+ --enable-tvhcsa \
+ --enable-trace \
+ --nowerror \
+ --disable-bintray_cache \
+ --python=$TOOLCHAIN/bin/python"
+
# fails to build in subdirs
cd $PKG_BUILD
rm -rf .$TARGET_NAME
diff --git a/packages/audio/pulseaudio/package.mk b/packages/audio/pulseaudio/package.mk
index 761542730f..d28ae529dc 100644
--- a/packages/audio/pulseaudio/package.mk
+++ b/packages/audio/pulseaudio/package.mk
@@ -79,8 +79,7 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-silent-rules \
--with-soxr \
--with-module-dir=/usr/lib/pulse"
-pre_configure_target()
-{
+pre_configure_target() {
sed -e 's|; remixing-use-all-sink-channels = yes|; remixing-use-all-sink-channels = no|' \
-i $PKG_BUILD/src/daemon/daemon.conf.in
}
diff --git a/packages/compress/lz4/package.mk b/packages/compress/lz4/package.mk
index e515f0048c..80c44b412b 100644
--- a/packages/compress/lz4/package.mk
+++ b/packages/compress/lz4/package.mk
@@ -11,9 +11,11 @@ PKG_DEPENDS_HOST="toolchain"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="lz4 data compressor/decompressor"
-PKG_CMAKE_SCRIPT="$PKG_BUILD/contrib/cmake_unofficial/CMakeLists.txt"
+configure_package() {
+ PKG_CMAKE_SCRIPT="$PKG_BUILD/contrib/cmake_unofficial/CMakeLists.txt"
-PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=0 -DCMAKE_POSITION_INDEPENDENT_CODE=0"
+ PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=0 -DCMAKE_POSITION_INDEPENDENT_CODE=0"
+}
post_makeinstall_target() {
rm -rf $INSTALL
diff --git a/packages/compress/zstd/package.mk b/packages/compress/zstd/package.mk
index 2545399082..60120e9b59 100644
--- a/packages/compress/zstd/package.mk
+++ b/packages/compress/zstd/package.mk
@@ -11,6 +11,7 @@ PKG_SOURCE_DIR=$PKG_NAME-$PKG_VERSION
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="A fast real-time compression algorithm."
-
-PKG_CMAKE_SCRIPT="$PKG_BUILD/build/cmake/CMakeLists.txt"
-PKG_CMAKE_OPTS_HOST="-DTHREADS_PTHREAD_ARG=0"
+configure_package() {
+ PKG_CMAKE_SCRIPT="$PKG_BUILD/build/cmake/CMakeLists.txt"
+ PKG_CMAKE_OPTS_HOST="-DTHREADS_PTHREAD_ARG=0"
+}
diff --git a/packages/databases/sqlite/package.mk b/packages/databases/sqlite/package.mk
index de52d44fa2..66af7122b5 100644
--- a/packages/databases/sqlite/package.mk
+++ b/packages/databases/sqlite/package.mk
@@ -13,6 +13,14 @@ PKG_LONGDESC="An Embeddable SQL Database Engine."
# libsqlite3.a(sqlite3.o): requires dynamic R_X86_64_PC32 reloc against 'sqlite3_stricmp' which may overflow at runtime
PKG_BUILD_FLAGS="+pic +pic:host -parallel"
+PKG_CONFIGURE_OPTS_TARGET="--disable-static \
+ --enable-shared \
+ --disable-readline \
+ --enable-threadsafe \
+ --enable-dynamic-extensions \
+ --with-gnu-ld"
+
+pre_configure_target() {
# sqlite fails to compile with fast-math link time optimization.
CFLAGS=`echo $CFLAGS | sed -e "s|-Ofast|-O3|g"`
CFLAGS=`echo $CFLAGS | sed -e "s|-ffast-math||g"`
@@ -43,10 +51,4 @@ PKG_BUILD_FLAGS="+pic +pic:host -parallel"
# sqlite3_config(SQLITE_CONFIG_MMAP_SIZE) call, or at run-time using the
# mmap_size pragma.
CFLAGS="$CFLAGS -DSQLITE_TEMP_STORE=3 -DSQLITE_DEFAULT_MMAP_SIZE=268435456"
-
-PKG_CONFIGURE_OPTS_TARGET="--disable-static \
- --enable-shared \
- --disable-readline \
- --enable-threadsafe \
- --enable-dynamic-extensions \
- --with-gnu-ld"
+}
diff --git a/packages/debug/gdb/package.mk b/packages/debug/gdb/package.mk
index b5041ad3cb..10c51b7229 100644
--- a/packages/debug/gdb/package.mk
+++ b/packages/debug/gdb/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="gdb"
PKG_VERSION="8.1"
@@ -11,9 +12,6 @@ PKG_DEPENDS_TARGET="toolchain zlib ncurses expat"
PKG_LONGDESC="GNU Project debugger, allows you to see what is going on inside another program while it executes."
# gdb could fail on runtime if build with LTO support
-CC_FOR_BUILD="$HOST_CC"
-CFLAGS_FOR_BUILD="$HOST_CFLAGS"
-
PKG_CONFIGURE_OPTS_TARGET="bash_cv_have_mbstate_t=set \
--disable-shared \
--enable-static \
@@ -30,6 +28,11 @@ PKG_CONFIGURE_OPTS_TARGET="bash_cv_have_mbstate_t=set \
--enable-libssp \
--disable-werror"
+pre_configure_target() {
+ CC_FOR_BUILD="$HOST_CC"
+ CFLAGS_FOR_BUILD="$HOST_CFLAGS"
+}
+
makeinstall_target() {
make DESTDIR=$INSTALL install
}
diff --git a/packages/devel/ccache/package.mk b/packages/devel/ccache/package.mk
index 186641fc47..f0cc2a309b 100644
--- a/packages/devel/ccache/package.mk
+++ b/packages/devel/ccache/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="ccache"
PKG_VERSION="3.3.6"
@@ -10,11 +11,13 @@ PKG_URL="https://samba.org/ftp/ccache/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS_HOST="make:host"
PKG_LONGDESC="A compiler cache to speed up re-compilation of C/C++ code by caching."
-export CC=$LOCAL_CC
-export CXX=$LOCAL_CXX
-
PKG_CONFIGURE_OPTS_HOST="--with-bundled-zlib"
+pre_configure_host() {
+ export CC=$LOCAL_CC
+ export CXX=$LOCAL_CXX
+}
+
post_makeinstall_host() {
# setup ccache
if [ -z "$CCACHE_DISABLE" ]; then
diff --git a/packages/devel/gettext/package.mk b/packages/devel/gettext/package.mk
index 766147a191..48d131cb7d 100644
--- a/packages/devel/gettext/package.mk
+++ b/packages/devel/gettext/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="gettext"
PKG_VERSION="0.19.8.1"
@@ -10,14 +11,16 @@ PKG_URL="http://ftp.gnu.org/pub/gnu/gettext/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS_HOST="ccache:host"
PKG_LONGDESC="A program internationalization library and tools."
-PKG_CONFIGURE_SCRIPT="gettext-tools/configure"
+configure_package() {
+ PKG_CONFIGURE_SCRIPT="${PKG_BUILD}/gettext-tools/configure"
-PKG_CONFIGURE_OPTS_HOST="--enable-static --disable-shared \
- --disable-rpath \
- --with-gnu-ld \
- --disable-java \
- --disable-curses \
- --with-included-libxml \
- --disable-native-java \
- --disable-csharp \
- --without-emacs"
+ PKG_CONFIGURE_OPTS_HOST="--enable-static --disable-shared \
+ --disable-rpath \
+ --with-gnu-ld \
+ --disable-java \
+ --disable-curses \
+ --with-included-libxml \
+ --disable-native-java \
+ --disable-csharp \
+ --without-emacs"
+}
diff --git a/packages/devel/glibc/package.mk b/packages/devel/glibc/package.mk
index fedd811828..a487ed0aa9 100644
--- a/packages/devel/glibc/package.mk
+++ b/packages/devel/glibc/package.mk
@@ -45,8 +45,6 @@ else
PKG_CONFIGURE_OPTS_TARGET="$PKG_CONFIGURE_OPTS_TARGET --disable-debug"
fi
-NSS_CONF_DIR="$PKG_BUILD/nss"
-
pre_build_target() {
cd $PKG_BUILD
aclocal --force --verbose
diff --git a/packages/devel/make/package.mk b/packages/devel/make/package.mk
index 2e53181f1d..366fec7145 100644
--- a/packages/devel/make/package.mk
+++ b/packages/devel/make/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="make"
PKG_VERSION="4.2.1"
@@ -10,7 +11,9 @@ PKG_URL="http://ftpmirror.gnu.org/make/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS_HOST=""
PKG_LONGDESC="Utility to maintain groups of programs."
-export CC=$LOCAL_CC
+pre_configure_host() {
+ export CC=$LOCAL_CC
+}
post_makeinstall_host() {
ln -sf make $TOOLCHAIN/bin/gmake
diff --git a/packages/emulation/libretro-fbalpha/package.mk b/packages/emulation/libretro-fbalpha/package.mk
index e05bd4c971..6a0b13d9eb 100644
--- a/packages/emulation/libretro-fbalpha/package.mk
+++ b/packages/emulation/libretro-fbalpha/package.mk
@@ -15,9 +15,9 @@ PKG_LIBNAME="fbalpha_libretro.so"
PKG_LIBPATH="$PKG_LIBNAME"
PKG_LIBVAR="FBALPHA_LIB"
-PKG_MAKE_OPTS_TARGET="-f makefile.libretro CC=$CC CXX=$CXX GIT_VERSION=${PKG_VERSION:0:7}"
-
pre_make_target() {
+ PKG_MAKE_OPTS_TARGET="-f makefile.libretro CC=$CC CXX=$CXX GIT_VERSION=${PKG_VERSION:0:7}"
+
if [ "$PROJECT" = "RPi" ]; then
case $DEVICE in
RPi)
diff --git a/packages/emulation/libretro-vram-test/package.mk b/packages/emulation/libretro-vram-test/package.mk
index 8d5d2774bd..e4e28d5391 100644
--- a/packages/emulation/libretro-vram-test/package.mk
+++ b/packages/emulation/libretro-vram-test/package.mk
@@ -12,9 +12,12 @@ PKG_LONGDESC="VRAM Test from libretro"
PKG_TOOLCHAIN="manual"
PKG_LIBNAME="testsw_vram_libretro.so"
-PKG_LIBPATH="$PKG_BUILD/video/software/rendering_direct_to_vram/$PKG_LIBNAME"
PKG_LIBVAR="VRAM-TEST_LIB"
+configure_package() {
+ PKG_LIBPATH="$PKG_BUILD/video/software/rendering_direct_to_vram/$PKG_LIBNAME"
+}
+
make_target() {
cd $PKG_BUILD/video/software/rendering_direct_to_vram
make
diff --git a/packages/graphics/vsxu/package.mk b/packages/graphics/vsxu/package.mk
index 0e0d2c9328..54e015dc09 100644
--- a/packages/graphics/vsxu/package.mk
+++ b/packages/graphics/vsxu/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="vsxu"
PKG_VERSION="0.5.1"
@@ -12,13 +13,15 @@ PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain $OPENGL libX11 glew glfw zlib libpng libjpeg-turbo freetype"
PKG_LONGDESC="an OpenGL-based programming environment to visualize music and create graphic effects"
-export LDFLAGS="$LDFLAGS -lX11"
-
PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=0 \
-DVSXU_STATIC=1 \
-DCMAKE_POSITION_INDEPENDENT_CODE=1 \
-DCMAKE_CXX_FLAGS=-I$SYSROOT_PREFIX/usr/include/freetype2"
+pre_configure_target(){
+ export LDFLAGS="$LDFLAGS -lX11"
+}
+
post_makeinstall_target() {
mkdir -p $SYSROOT_PREFIX/usr/lib/vsxu
cp -PR $INSTALL/usr/lib/* $SYSROOT_PREFIX/usr/lib
diff --git a/packages/lang/llvm/package.mk b/packages/lang/llvm/package.mk
index 1b717465c9..ce727be513 100644
--- a/packages/lang/llvm/package.mk
+++ b/packages/lang/llvm/package.mk
@@ -39,6 +39,15 @@ PKG_CMAKE_OPTS_COMMON="-DLLVM_INCLUDE_TOOLS=ON \
PKG_CMAKE_OPTS_HOST="$PKG_CMAKE_OPTS_COMMON \
-DCMAKE_INSTALL_RPATH=$TOOLCHAIN/lib"
+pre_configure_target() {
+ PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_COMMON \
+ -DCMAKE_BUILD_TYPE=MinSizeRel \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DLLVM_TARGET_ARCH="$TARGET_ARCH" \
+ -DLLVM_TABLEGEN=$TOOLCHAIN/bin/llvm-tblgen"
+}
+
make_host() {
ninja $NINJA_OPTS llvm-config llvm-tblgen
}
@@ -48,13 +57,6 @@ makeinstall_host() {
cp -a bin/llvm-tblgen $TOOLCHAIN/bin
}
-PKG_CMAKE_OPTS_TARGET="$PKG_CMAKE_OPTS_COMMON \
- -DCMAKE_BUILD_TYPE=MinSizeRel \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DLLVM_TARGET_ARCH="$TARGET_ARCH" \
- -DLLVM_TABLEGEN=$TOOLCHAIN/bin/llvm-tblgen"
-
post_makeinstall_target() {
rm -rf $INSTALL/usr/bin
rm -rf $INSTALL/usr/lib/LLVMHello.so
diff --git a/packages/linux-drivers/dvbhdhomerun/package.mk b/packages/linux-drivers/dvbhdhomerun/package.mk
index b71ef80bbf..948c48e140 100644
--- a/packages/linux-drivers/dvbhdhomerun/package.mk
+++ b/packages/linux-drivers/dvbhdhomerun/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="dvbhdhomerun"
PKG_VERSION="20130704"
@@ -13,7 +14,20 @@ PKG_NEED_UNPACK="$LINUX_DEPENDS"
PKG_LONGDESC="A linux DVB driver for the HDHomeRun TV tuner (http://www.silicondust.com)."
PKG_IS_KERNEL_PKG="yes"
-PKG_CMAKE_SCRIPT="userhdhomerun/CMakeLists.txt"
+configure_package() {
+ PKG_CMAKE_SCRIPT="${PKG_BUILD}/userhdhomerun/CMakeLists.txt"
+}
+
+pre_configure_target() {
+ # use it here to be sure libhdhomerun is already built
+ PKG_CMAKE_OPTS_TARGET="-DLIBHDHOMERUN_PATH=$(ls -d $BUILD/libhdhomerun-*/)"
+
+ # absolute path
+ LIBHDHOMERUN_PATH=$(ls -d $BUILD/libhdhomerun-*/)
+ sed -i "s|SET(LIBHDHOMERUN_PATH .*)|SET(LIBHDHOMERUN_PATH $LIBHDHOMERUN_PATH)|g" ../userhdhomerun/CMakeLists.txt
+ sed -i "s|/etc/dvbhdhomerun|/tmp/dvbhdhomerun|g" ../userhdhomerun/hdhomerun_tuner.cpp
+ sed -i "s|/etc/dvbhdhomerun|/tmp/dvbhdhomerun|g" ../userhdhomerun/hdhomerun_controller.cpp
+}
pre_make_target() {
( cd ../kernel
@@ -22,18 +36,6 @@ pre_make_target() {
)
}
-pre_configure_target() {
-
-# use it here to be sure libhdhomerun is already built
- PKG_CMAKE_OPTS_TARGET="-DLIBHDHOMERUN_PATH=$(ls -d $BUILD/libhdhomerun-*/)"
-
-# absolute path
- LIBHDHOMERUN_PATH=$(ls -d $BUILD/libhdhomerun-*/)
- sed -i "s|SET(LIBHDHOMERUN_PATH .*)|SET(LIBHDHOMERUN_PATH $LIBHDHOMERUN_PATH)|g" ../userhdhomerun/CMakeLists.txt
- sed -i "s|/etc/dvbhdhomerun|/tmp/dvbhdhomerun|g" ../userhdhomerun/hdhomerun_tuner.cpp
- sed -i "s|/etc/dvbhdhomerun|/tmp/dvbhdhomerun|g" ../userhdhomerun/hdhomerun_controller.cpp
-}
-
makeinstall_target() {
cd $PKG_BUILD
mkdir -p $INSTALL/$(get_full_module_dir)/hdhomerun
diff --git a/packages/linux-drivers/gpu-aml/package.mk b/packages/linux-drivers/gpu-aml/package.mk
index ebd939f057..3be9b6685c 100644
--- a/packages/linux-drivers/gpu-aml/package.mk
+++ b/packages/linux-drivers/gpu-aml/package.mk
@@ -14,10 +14,12 @@ PKG_LONGDESC="gpu-aml: Linux drivers for Mali GPUs found in Amlogic Meson SoCs"
PKG_TOOLCHAIN="manual"
PKG_IS_KERNEL_PKG="yes"
-PKG_UTGARD_VERSION="r5p1"
-PKG_UTGARD_BUILD_DIR="$PKG_BUILD/utgard/$PKG_UTGARD_VERSION"
-PKG_MIDGARD_VERSION="r16p0"
-PKG_MIDGARD_BUILD_DIR="$PKG_BUILD/midgard/$PKG_MIDGARD_VERSION/kernel/drivers/gpu/arm/midgard"
+configure_package() {
+ PKG_UTGARD_VERSION="r5p1"
+ PKG_UTGARD_BUILD_DIR="$PKG_BUILD/utgard/$PKG_UTGARD_VERSION"
+ PKG_MIDGARD_VERSION="r16p0"
+ PKG_MIDGARD_BUILD_DIR="$PKG_BUILD/midgard/$PKG_MIDGARD_VERSION/kernel/drivers/gpu/arm/midgard"
+}
pre_configure_target() {
sed -e "s|shell date|shell date -R|g" -i $PKG_BUILD/utgard/*/Kbuild
diff --git a/packages/linux/package.mk b/packages/linux/package.mk
index 787f8270a2..3233cb5ae0 100644
--- a/packages/linux/package.mk
+++ b/packages/linux/package.mk
@@ -206,7 +206,7 @@ make_target() {
( cd $ROOT
rm -rf $BUILD/initramfs
$SCRIPTS/install initramfs
- )
+ ) || die "FAILURE: Building initramfs"
if [ "$BOOTLOADER" = "u-boot" -a -n "$KERNEL_UBOOT_EXTRA_TARGET" ]; then
for extra_target in "$KERNEL_UBOOT_EXTRA_TARGET"; do
diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk
index 9ec5a5a8e0..a02ea76cb4 100644
--- a/packages/mediacenter/kodi/package.mk
+++ b/packages/mediacenter/kodi/package.mk
@@ -31,216 +31,218 @@ case $KODI_VENDOR in
;;
esac
-# Single threaded LTO is very slow so rely on Kodi for parallel LTO support
-if [ "$LTO_SUPPORT" = "yes" ] && ! build_with_debug; then
- PKG_KODI_USE_LTO="-DUSE_LTO=$CONCURRENCY_MAKE_LEVEL"
-fi
+configure_package() {
+ # Single threaded LTO is very slow so rely on Kodi for parallel LTO support
+ if [ "$LTO_SUPPORT" = "yes" ] && ! build_with_debug; then
+ PKG_KODI_USE_LTO="-DUSE_LTO=$CONCURRENCY_MAKE_LEVEL"
+ fi
-get_graphicdrivers
+ get_graphicdrivers
-PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET dbus"
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET dbus"
-if [ "$DISPLAYSERVER" = "x11" ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libX11 libXext libdrm libXrandr"
- KODI_XORG="-DCORE_PLATFORM_NAME=x11"
-elif [ "$DISPLAYSERVER" = "weston" ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET wayland waylandpp"
- CFLAGS="$CFLAGS -DMESA_EGL_NO_X11_HEADERS"
- CXXFLAGS="$CXXFLAGS -DMESA_EGL_NO_X11_HEADERS"
- KODI_XORG="-DCORE_PLATFORM_NAME=wayland -DWAYLAND_RENDER_SYSTEM=gles"
-fi
-
-if [ ! "$OPENGL" = "no" ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $OPENGL glu"
-fi
-
-if [ "$OPENGLES_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $OPENGLES"
-fi
-
-if [ "$ALSA_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET alsa-lib"
- KODI_ALSA="-DENABLE_ALSA=ON"
-else
- KODI_ALSA="-DENABLE_ALSA=OFF"
-fi
-
-if [ "$PULSEAUDIO_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET pulseaudio"
- KODI_PULSEAUDIO="-DENABLE_PULSEAUDIO=ON"
-else
- KODI_PULSEAUDIO="-DENABLE_PULSEAUDIO=OFF"
-fi
-
-if [ "$ESPEAK_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET espeak"
-fi
-
-if [ "$CEC_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libcec"
- KODI_CEC="-DENABLE_CEC=ON"
-else
- KODI_CEC="-DENABLE_CEC=OFF"
-fi
-
-if [ "$KODI_OPTICAL_SUPPORT" = yes ]; then
- KODI_OPTICAL="-DENABLE_OPTICAL=ON"
-else
- KODI_OPTICAL="-DENABLE_OPTICAL=OFF"
-fi
-
-if [ "$KODI_DVDCSS_SUPPORT" = yes ]; then
- KODI_DVDCSS="-DENABLE_DVDCSS=ON \
- -DLIBDVDCSS_URL=$SOURCES/libdvdcss/libdvdcss-$(get_pkg_version libdvdcss).tar.gz"
-else
- KODI_DVDCSS="-DENABLE_DVDCSS=OFF"
-fi
-
-if [ "$KODI_BLURAY_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libbluray"
- KODI_BLURAY="-DENABLE_BLURAY=ON"
-else
- KODI_BLURAY="-DENABLE_BLURAY=OFF"
-fi
-
-if [ "$AVAHI_DAEMON" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET avahi nss-mdns"
- KODI_AVAHI="-DENABLE_AVAHI=ON"
-else
- KODI_AVAHI="-DENABLE_AVAHI=OFF"
-fi
-
-case "$KODI_MYSQL_SUPPORT" in
- mysql) PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET mysql"
- KODI_MYSQL="-DENABLE_MYSQLCLIENT=ON -DENABLE_MARIADBCLIENT=OFF"
- ;;
- mariadb) PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET mariadb-connector-c"
- KODI_MYSQL="-DENABLE_MARIADBCLIENT=ON -DENABLE_MYSQLCLIENT=OFF"
- ;;
- *) KODI_MYSQL="-DENABLE_MYSQLCLIENT=OFF -DENABLE_MARIADBCLIENT=OFF"
-esac
-
-if [ "$KODI_AIRPLAY_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libplist"
- KODI_AIRPLAY="-DENABLE_PLIST=ON"
-else
- KODI_AIRPLAY="-DENABLE_PLIST=OFF"
-fi
-
-if [ "$KODI_AIRTUNES_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libshairplay"
- KODI_AIRTUNES="-DENABLE_AIRTUNES=ON"
-else
- KODI_AIRTUNES="-DENABLE_AIRTUNES=OFF"
-fi
-
-if [ "$KODI_NFS_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libnfs"
- KODI_NFS="-DENABLE_NFS=ON"
-else
- KODI_NFS="-DENABLE_NFS=OFF"
-fi
-
-if [ "$KODI_SAMBA_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET samba"
-fi
-
-if [ "$KODI_WEBSERVER_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libmicrohttpd"
-fi
-
-if [ "$KODI_UPNP_SUPPORT" = yes ]; then
- KODI_UPNP="-DENABLE_UPNP=ON"
-else
- KODI_UPNP="-DENABLE_UPNP=OFF"
-fi
-
-if target_has_feature neon; then
- KODI_NEON="-DENABLE_NEON=ON"
-else
- KODI_NEON="-DENABLE_NEON=OFF"
-fi
-
-if [ "$VDPAU_SUPPORT" = "yes" -a "$DISPLAYSERVER" = "x11" ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libvdpau"
- KODI_VDPAU="-DENABLE_VDPAU=ON"
-else
- KODI_VDPAU="-DENABLE_VDPAU=OFF"
-fi
-
-if [ "$VAAPI_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libva"
- KODI_VAAPI="-DENABLE_VAAPI=ON"
-else
- KODI_VAAPI="-DENABLE_VAAPI=OFF"
-fi
-
-if [ "$TARGET_ARCH" = "x86_64" ]; then
- KODI_ARCH="-DWITH_CPU=$TARGET_ARCH"
-else
- KODI_ARCH="-DWITH_ARCH=$TARGET_ARCH"
-fi
-
-if [ "$DEVICE" = "Slice" -o "$DEVICE" = "Slice3" ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET led_tools"
-fi
-
-if [ ! "$KODIPLAYER_DRIVER" = default ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $KODIPLAYER_DRIVER libinput libxkbcommon"
- if [ "$KODIPLAYER_DRIVER" = bcm2835-driver ]; then
- KODI_PLAYER="-DCORE_PLATFORM_NAME=rbpi"
- elif [ "$KODIPLAYER_DRIVER" = mesa -o "$KODIPLAYER_DRIVER" = rkmpp ]; then
- KODI_PLAYER="-DCORE_PLATFORM_NAME=gbm -DGBM_RENDER_SYSTEM=gles"
+ if [ "$DISPLAYSERVER" = "x11" ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libX11 libXext libdrm libXrandr"
+ KODI_XORG="-DCORE_PLATFORM_NAME=x11"
+ elif [ "$DISPLAYSERVER" = "weston" ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET wayland waylandpp"
CFLAGS="$CFLAGS -DMESA_EGL_NO_X11_HEADERS"
CXXFLAGS="$CXXFLAGS -DMESA_EGL_NO_X11_HEADERS"
- elif [ "$KODIPLAYER_DRIVER" = libamcodec ]; then
- KODI_PLAYER="-DCORE_PLATFORM_NAME=aml"
+ KODI_XORG="-DCORE_PLATFORM_NAME=wayland -DWAYLAND_RENDER_SYSTEM=gles"
fi
-fi
-KODI_LIBDVD="$KODI_DVDCSS \
- -DLIBDVDNAV_URL=$SOURCES/libdvdnav/libdvdnav-$(get_pkg_version libdvdnav).tar.gz \
- -DLIBDVDREAD_URL=$SOURCES/libdvdread/libdvdread-$(get_pkg_version libdvdread).tar.gz"
+ if [ ! "$OPENGL" = "no" ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $OPENGL glu"
+ fi
-PKG_CMAKE_OPTS_TARGET="-DNATIVEPREFIX=$TOOLCHAIN \
- -DWITH_TEXTUREPACKER=$TOOLCHAIN/bin/TexturePacker \
- -DWITH_JSONSCHEMABUILDER=$TOOLCHAIN/bin/JsonSchemaBuilder \
- -DDEPENDS_PATH=$PKG_BUILD/depends \
- -DPYTHON_EXECUTABLE=$TOOLCHAIN/bin/$PKG_PYTHON_VERSION \
- -DPYTHON_INCLUDE_DIRS=$SYSROOT_PREFIX/usr/include/$PKG_PYTHON_VERSION \
- -DGIT_VERSION=$PKG_VERSION \
- -DWITH_FFMPEG=$(get_build_dir ffmpeg) \
- -DENABLE_INTERNAL_FFMPEG=OFF \
- -DFFMPEG_INCLUDE_DIRS=$SYSROOT_PREFIX/usr \
- -DENABLE_INTERNAL_CROSSGUID=OFF \
- -DENABLE_UDEV=ON \
- -DENABLE_DBUS=ON \
- -DENABLE_XSLT=ON \
- -DENABLE_CCACHE=ON \
- -DENABLE_LIRCCLIENT=ON \
- -DENABLE_EVENTCLIENTS=ON \
- -DENABLE_LDGOLD=ON \
- -DENABLE_DEBUGFISSION=OFF \
- -DENABLE_APP_AUTONAME=OFF \
- -DENABLE_INTERNAL_FLATBUFFERS=OFF \
- $PKG_KODI_USE_LTO \
- $KODI_ARCH \
- $KODI_NEON \
- $KODI_VDPAU \
- $KODI_VAAPI \
- $KODI_CEC \
- $KODI_XORG \
- $KODI_SAMBA \
- $KODI_NFS \
- $KODI_LIBDVD \
- $KODI_AVAHI \
- $KODI_UPNP \
- $KODI_MYSQL \
- $KODI_AIRPLAY \
- $KODI_AIRTUNES \
- $KODI_OPTICAL \
- $KODI_BLURAY \
- $KODI_PLAYER"
+ if [ "$OPENGLES_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $OPENGLES"
+ fi
+
+ if [ "$ALSA_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET alsa-lib"
+ KODI_ALSA="-DENABLE_ALSA=ON"
+ else
+ KODI_ALSA="-DENABLE_ALSA=OFF"
+ fi
+
+ if [ "$PULSEAUDIO_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET pulseaudio"
+ KODI_PULSEAUDIO="-DENABLE_PULSEAUDIO=ON"
+ else
+ KODI_PULSEAUDIO="-DENABLE_PULSEAUDIO=OFF"
+ fi
+
+ if [ "$ESPEAK_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET espeak"
+ fi
+
+ if [ "$CEC_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libcec"
+ KODI_CEC="-DENABLE_CEC=ON"
+ else
+ KODI_CEC="-DENABLE_CEC=OFF"
+ fi
+
+ if [ "$KODI_OPTICAL_SUPPORT" = yes ]; then
+ KODI_OPTICAL="-DENABLE_OPTICAL=ON"
+ else
+ KODI_OPTICAL="-DENABLE_OPTICAL=OFF"
+ fi
+
+ if [ "$KODI_DVDCSS_SUPPORT" = yes ]; then
+ KODI_DVDCSS="-DENABLE_DVDCSS=ON \
+ -DLIBDVDCSS_URL=$SOURCES/libdvdcss/libdvdcss-$(get_pkg_version libdvdcss).tar.gz"
+ else
+ KODI_DVDCSS="-DENABLE_DVDCSS=OFF"
+ fi
+
+ if [ "$KODI_BLURAY_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libbluray"
+ KODI_BLURAY="-DENABLE_BLURAY=ON"
+ else
+ KODI_BLURAY="-DENABLE_BLURAY=OFF"
+ fi
+
+ if [ "$AVAHI_DAEMON" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET avahi nss-mdns"
+ KODI_AVAHI="-DENABLE_AVAHI=ON"
+ else
+ KODI_AVAHI="-DENABLE_AVAHI=OFF"
+ fi
+
+ case "$KODI_MYSQL_SUPPORT" in
+ mysql) PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET mysql"
+ KODI_MYSQL="-DENABLE_MYSQLCLIENT=ON -DENABLE_MARIADBCLIENT=OFF"
+ ;;
+ mariadb) PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET mariadb-connector-c"
+ KODI_MYSQL="-DENABLE_MARIADBCLIENT=ON -DENABLE_MYSQLCLIENT=OFF"
+ ;;
+ *) KODI_MYSQL="-DENABLE_MYSQLCLIENT=OFF -DENABLE_MARIADBCLIENT=OFF"
+ esac
+
+ if [ "$KODI_AIRPLAY_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libplist"
+ KODI_AIRPLAY="-DENABLE_PLIST=ON"
+ else
+ KODI_AIRPLAY="-DENABLE_PLIST=OFF"
+ fi
+
+ if [ "$KODI_AIRTUNES_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libshairplay"
+ KODI_AIRTUNES="-DENABLE_AIRTUNES=ON"
+ else
+ KODI_AIRTUNES="-DENABLE_AIRTUNES=OFF"
+ fi
+
+ if [ "$KODI_NFS_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libnfs"
+ KODI_NFS="-DENABLE_NFS=ON"
+ else
+ KODI_NFS="-DENABLE_NFS=OFF"
+ fi
+
+ if [ "$KODI_SAMBA_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET samba"
+ fi
+
+ if [ "$KODI_WEBSERVER_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libmicrohttpd"
+ fi
+
+ if [ "$KODI_UPNP_SUPPORT" = yes ]; then
+ KODI_UPNP="-DENABLE_UPNP=ON"
+ else
+ KODI_UPNP="-DENABLE_UPNP=OFF"
+ fi
+
+ if target_has_feature neon; then
+ KODI_NEON="-DENABLE_NEON=ON"
+ else
+ KODI_NEON="-DENABLE_NEON=OFF"
+ fi
+
+ if [ "$VDPAU_SUPPORT" = "yes" -a "$DISPLAYSERVER" = "x11" ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libvdpau"
+ KODI_VDPAU="-DENABLE_VDPAU=ON"
+ else
+ KODI_VDPAU="-DENABLE_VDPAU=OFF"
+ fi
+
+ if [ "$VAAPI_SUPPORT" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET libva"
+ KODI_VAAPI="-DENABLE_VAAPI=ON"
+ else
+ KODI_VAAPI="-DENABLE_VAAPI=OFF"
+ fi
+
+ if [ "$TARGET_ARCH" = "x86_64" ]; then
+ KODI_ARCH="-DWITH_CPU=$TARGET_ARCH"
+ else
+ KODI_ARCH="-DWITH_ARCH=$TARGET_ARCH"
+ fi
+
+ if [ "$DEVICE" = "Slice" -o "$DEVICE" = "Slice3" ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET led_tools"
+ fi
+
+ if [ ! "$KODIPLAYER_DRIVER" = default ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET $KODIPLAYER_DRIVER libinput libxkbcommon"
+ if [ "$KODIPLAYER_DRIVER" = bcm2835-driver ]; then
+ KODI_PLAYER="-DCORE_PLATFORM_NAME=rbpi"
+ elif [ "$KODIPLAYER_DRIVER" = mesa -o "$KODIPLAYER_DRIVER" = rkmpp ]; then
+ KODI_PLAYER="-DCORE_PLATFORM_NAME=gbm -DGBM_RENDER_SYSTEM=gles"
+ CFLAGS="$CFLAGS -DMESA_EGL_NO_X11_HEADERS"
+ CXXFLAGS="$CXXFLAGS -DMESA_EGL_NO_X11_HEADERS"
+ elif [ "$KODIPLAYER_DRIVER" = libamcodec ]; then
+ KODI_PLAYER="-DCORE_PLATFORM_NAME=aml"
+ fi
+ fi
+
+ KODI_LIBDVD="$KODI_DVDCSS \
+ -DLIBDVDNAV_URL=$SOURCES/libdvdnav/libdvdnav-$(get_pkg_version libdvdnav).tar.gz \
+ -DLIBDVDREAD_URL=$SOURCES/libdvdread/libdvdread-$(get_pkg_version libdvdread).tar.gz"
+
+ PKG_CMAKE_OPTS_TARGET="-DNATIVEPREFIX=$TOOLCHAIN \
+ -DWITH_TEXTUREPACKER=$TOOLCHAIN/bin/TexturePacker \
+ -DWITH_JSONSCHEMABUILDER=$TOOLCHAIN/bin/JsonSchemaBuilder \
+ -DDEPENDS_PATH=$PKG_BUILD/depends \
+ -DPYTHON_EXECUTABLE=$TOOLCHAIN/bin/$PKG_PYTHON_VERSION \
+ -DPYTHON_INCLUDE_DIRS=$SYSROOT_PREFIX/usr/include/$PKG_PYTHON_VERSION \
+ -DGIT_VERSION=$PKG_VERSION \
+ -DWITH_FFMPEG=$(get_build_dir ffmpeg) \
+ -DENABLE_INTERNAL_FFMPEG=OFF \
+ -DFFMPEG_INCLUDE_DIRS=$SYSROOT_PREFIX/usr \
+ -DENABLE_INTERNAL_CROSSGUID=OFF \
+ -DENABLE_UDEV=ON \
+ -DENABLE_DBUS=ON \
+ -DENABLE_XSLT=ON \
+ -DENABLE_CCACHE=ON \
+ -DENABLE_LIRCCLIENT=ON \
+ -DENABLE_EVENTCLIENTS=ON \
+ -DENABLE_LDGOLD=ON \
+ -DENABLE_DEBUGFISSION=OFF \
+ -DENABLE_APP_AUTONAME=OFF \
+ -DENABLE_INTERNAL_FLATBUFFERS=OFF \
+ $PKG_KODI_USE_LTO \
+ $KODI_ARCH \
+ $KODI_NEON \
+ $KODI_VDPAU \
+ $KODI_VAAPI \
+ $KODI_CEC \
+ $KODI_XORG \
+ $KODI_SAMBA \
+ $KODI_NFS \
+ $KODI_LIBDVD \
+ $KODI_AVAHI \
+ $KODI_UPNP \
+ $KODI_MYSQL \
+ $KODI_AIRPLAY \
+ $KODI_AIRTUNES \
+ $KODI_OPTICAL \
+ $KODI_BLURAY \
+ $KODI_PLAYER"
+}
pre_configure_target() {
export LIBS="$LIBS -lncurses"
diff --git a/packages/network/samba/package.mk b/packages/network/samba/package.mk
index c64fd48e65..38c3dcb551 100644
--- a/packages/network/samba/package.mk
+++ b/packages/network/samba/package.mk
@@ -13,78 +13,80 @@ PKG_NEED_UNPACK="$(get_pkg_directory heimdal) $(get_pkg_directory e2fsprogs)"
PKG_LONGDESC="A free SMB / CIFS fileserver and client."
PKG_BUILD_FLAGS="-gold"
-PKG_MAKE_OPTS_TARGET="V=1"
+configure_package() {
+ PKG_MAKE_OPTS_TARGET="V=1"
-if [ "$AVAHI_DAEMON" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET avahi"
- SMB_AVAHI="--enable-avahi"
-else
- SMB_AVAHI="--disable-avahi"
-fi
+ if [ "$AVAHI_DAEMON" = yes ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET avahi"
+ SMB_AVAHI="--enable-avahi"
+ else
+ SMB_AVAHI="--disable-avahi"
+ fi
-if [ "$TARGET_ARCH" = x86_64 ]; then
- SMB_AESNI="--accel-aes=intelaesni"
-else
- SMB_AESNI="--accel-aes=none"
-fi
+ if [ "$TARGET_ARCH" = x86_64 ]; then
+ SMB_AESNI="--accel-aes=intelaesni"
+ else
+ SMB_AESNI="--accel-aes=none"
+ fi
-PKG_CONFIGURE_OPTS="--prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --with-lockdir=/var/lock \
- --with-logfilebase=/var/log \
- --with-piddir=/run/samba \
- --with-privatedir=/run/samba \
- --with-modulesdir=/usr/lib \
- --with-privatelibdir=/usr/lib \
- --with-sockets-dir=/run/samba \
- --with-configdir=/run/samba \
- --with-libiconv=$SYSROOT_PREFIX/usr \
- --cross-compile \
- --cross-answers=$PKG_BUILD/cache.txt \
- --hostcc=gcc \
- --enable-fhs \
- --without-dmapi \
- --disable-glusterfs \
- --disable-rpath \
- --disable-rpath-install \
- --disable-rpath-private-install \
- $SMB_AVAHI \
- $SMB_AESNI \
- --disable-cups \
- --disable-iprint \
- --disable-gnutls \
- --with-relro \
- --with-sendfile-support \
- --without-acl-support \
- --without-ads \
- --without-ad-dc \
- --without-automount \
- --without-cluster-support \
- --without-dnsupdate \
- --without-fam \
- --without-gettext \
- --without-gpgme \
- --without-iconv \
- --without-ldap \
- --without-libarchive \
- --without-pam \
- --without-pie \
- --without-regedit \
- --without-systemd \
- --without-utmp \
- --without-winbind \
- --enable-auto-reconfigure \
- --bundled-libraries='ALL,!asn1_compile,!compile_et,!zlib' \
- --without-quotas \
- --with-syslog \
- --without-json-audit \
- --without-ldb-lmdb \
- --nopyc --nopyo"
+ PKG_CONFIGURE_OPTS="--prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-lockdir=/var/lock \
+ --with-logfilebase=/var/log \
+ --with-piddir=/run/samba \
+ --with-privatedir=/run/samba \
+ --with-modulesdir=/usr/lib \
+ --with-privatelibdir=/usr/lib \
+ --with-sockets-dir=/run/samba \
+ --with-configdir=/run/samba \
+ --with-libiconv=$SYSROOT_PREFIX/usr \
+ --cross-compile \
+ --cross-answers=$PKG_BUILD/cache.txt \
+ --hostcc=gcc \
+ --enable-fhs \
+ --without-dmapi \
+ --disable-glusterfs \
+ --disable-rpath \
+ --disable-rpath-install \
+ --disable-rpath-private-install \
+ $SMB_AVAHI \
+ $SMB_AESNI \
+ --disable-cups \
+ --disable-iprint \
+ --disable-gnutls \
+ --with-relro \
+ --with-sendfile-support \
+ --without-acl-support \
+ --without-ads \
+ --without-ad-dc \
+ --without-automount \
+ --without-cluster-support \
+ --without-dnsupdate \
+ --without-fam \
+ --without-gettext \
+ --without-gpgme \
+ --without-iconv \
+ --without-ldap \
+ --without-libarchive \
+ --without-pam \
+ --without-pie \
+ --without-regedit \
+ --without-systemd \
+ --without-utmp \
+ --without-winbind \
+ --enable-auto-reconfigure \
+ --bundled-libraries='ALL,!asn1_compile,!compile_et,!zlib' \
+ --without-quotas \
+ --with-syslog \
+ --without-json-audit \
+ --without-ldb-lmdb \
+ --nopyc --nopyo"
-PKG_SAMBA_TARGET="smbclient,client/smbclient,smbtree,testparm"
+ PKG_SAMBA_TARGET="smbclient,client/smbclient,smbtree,testparm"
-[ "$SAMBA_SERVER" = "yes" ] && PKG_SAMBA_TARGET+=",smbd/smbd,nmbd,smbpasswd"
+ [ "$SAMBA_SERVER" = "yes" ] && PKG_SAMBA_TARGET+=",smbd/smbd,nmbd,smbpasswd"
+}
pre_configure_target() {
# samba uses its own build directory
diff --git a/packages/readme.md b/packages/readme.md
index fec2352fe4..89390746f5 100644
--- a/packages/readme.md
+++ b/packages/readme.md
@@ -77,7 +77,7 @@ Additional options used when the package builds an addon.
| PKG_ADDON_IS_STANDALONE | - | no | Defines if an addon depends on Kodi (on) or is standalone (yes) |
| PKG_ADDON_BROKEN | - | no | Marks an addon as broken for the user |
-#### Detail Infomations for Options
+#### Detailed Information for Options
##### TOOLCHAIN options
@@ -144,6 +144,7 @@ Full list of overwrittable functions.
| function | stages specific | description |
|-------------------------|--------|-------------|
+| configure_package | - | Optional function to implement late binding variable assignment (see below) |
| unpack
pre_unpack
post_unpack | - | Extract the source from the downloaded file |
| pre_patch
post_patch | - | Apply the patches to the source, after extraction. The patch function it self is not allowed to overwritten |
| pre_build_\[stage] | yes | Runs before of the start of the build |
@@ -152,41 +153,106 @@ Full list of overwrittable functions.
| makeinstall_\[stage]
pre_makeinstall_\[stage]
post_makeinstall_\[stage] | yes | Installation of the files in the correct pathes
host: TOOLCHAIN
target: SYSROOT and IMAGE
bootstrap and init: temporary destination
| addon | - | Copy all files together for addon creation. This is requiered for addons |
+## Late Binding variable assignment
+
+A package will be loaded only once, by the call to `config/options`. During this process, additional package specific variables will be initialised, such as:
+
+* `PKG_BUILD` - path to the build folder
+* `PKG_SOURCE_NAME` - if not already specified, generated from `PKG_URL`, `PKG_NAME` and` PKG_VERSION`
+
+Since these variables will not exist at the time the package is loaded, they can only be referenced **after** package has loaded. This can be accomplished by referencing these variables in the `configure_package()` function which is executed once the additional variables have been assigned.
+
+If necessary, the following variables would be configured in `configure_package()` as they are normally relative to `${PKG_BUILD}`:
+```
+ PKG_CONFIGURE_SCRIPT
+ PKG_CMAKE_SCRIPT
+ PKG_MESON_SCRIPT
+```
+
+Further to this, toolchain variables that are defined in `setup_toolchain()` must not be referenced "globally" in the package as they will only be configured reliably after `setup_toolchain()` has been called during `scripts/build`. Any variable in the following list must instead be referenced in a package function such as `pre_build_*`, `pre_configure_*`, `pre_make_*` etc.:
+```
+ TARGET_CFLAGS TARGET_CXXFLAGS TARGET_LDFLAGS
+ NINJA_OPTS MAKEFLAGS
+ DESTIMAGE
+ CC CXX CPP LD
+ AS AR NM RANLIB
+ OBJCOPY OBJDUMP
+ STRIP
+ CPPFLAGS CFLAGS CXXFLAGS LDFLAGS
+ PKG_CONFIG
+ PKG_CONFIG_PATH
+ PKG_CONFIG_LIBDIR
+ PKG_CONFIG_SYSROOT_DIR
+ PKG_CONFIG_ALLOW_SYSTEM_CFLAGS
+ PKG_CONFIG_ALLOW_SYSTEM_LIBS
+ CMAKE_CONF CMAKE
+ HOST_CC HOST_CXX HOSTCC HOSTCXX
+ CC_FOR_BUILD CXX_FOR_BUILD BUILD_CC BUILD_CXX
+ _python_sysroot _python_prefix _python_exec_prefix
+```
+
+Lastly, the following variables are assigned during `scripts/build` but some packages may need to use alternative values for these variables. To do so, the package must assign alternative values in `pre_build_*`/`pre_configure_*`/`pre_make_*` etc. functions as these functions will be called after the variables are initialised with default values in `scripts/build` but before they are used by `scripts/build`.
+```
+ CMAKE_GENERATOR_NINJA
+
+ TARGET_CONFIGURE_OPTS
+ TARGET_CMAKE_OPTS
+ TARGET_MESON_OPTS
+
+ HOST_CONFIGURE_OPTS
+ HOST_CMAKE_OPTS
+ HOST_MESON_OPTS
+
+ INIT_CONFIGURE_OPTS
+ INIT_CMAKE_OPTS
+ INIT_MESON_OPTS
+
+ BOOTSTRAP_CONFIGURE_OPTS
+ BOOTSTRAP_CMAKE_OPTS
+ BOOTSTRAP_MESON_OPTS
+```
+
###### Example
```
+configure_package() {
+ # now we know where we're building, assign a value
+ PKG_CONFIGURE_SCRIPT="${PKG_BUILD}/gettext-tools/configure"
+}
+
post_patch() {
# replace hardcoded stuff
- sed -i $PKG_BUILD/Makefile 's|hardcoded stuff|variabled stuff|'
+ sed -i ${PKG_CONFIGURE_SCRIPT} 's|hardcoded stuff|variable stuff|'
}
pre_configure_target() {
+ # add extra flag to toolchain default
CFLAGS="$CFLAGS -DEXTRA_FLAG=yeah"
}
post_makeinstall_target() {
- # remove unused executable, only library needed
+ # remove unused executable, install what remains
rm $INSTALL/usr/bin/bigexecutable
}
```
## Add a new package to the Image
-1. Think about, why you needs it in the image.
+1. Think about, why you need it in the image.
* new multimedia tool
* add a new network tool
* new kernel driver
* ...
-2. Find a place in the packages-tree
- * look into the package-tree, i think most is self explaind. When 1. was done, this is going fast :)
- * do not place it, in an existing package (directory with includes a `package.mk`)
- * when you found a place, create a directory with the name of your package (must the same like `PKG_NAME`!!)
-3. Create a initial `package.mk`
- * you found a template under `packages/package.mk.template`. Copy the template into the new directory and call it `package.mk`
- * edit your new `package.mk`
-4. Find a place in the dependency tree. When 1. was done, this is going fast, again :)
- * when it extend an existing package, add it there to the `PKG_DEPENDS_TARGET`
- * take a look into the path `packages/virtual`, there you should find a virtual packages, that match your new package (misc-packages should the last option)
-5. now you can build your image
- * after the build, under build-[...]/ should apear a directory with your package-name and -version.
+2. Find a place in the packages tree
+ * look into the package tree structure, which is generally self explaind.
+ * do not place it in an existing package (directory that includes a `package.mk`)
+ * when you found a place, create a directory with the name of your package (use same value for `PKG_NAME`!!)
+3. Create an initial `package.mk`
+ * you can find a template under `packages/package.mk.template`. Copy the template into the new directory and call it `package.mk`
+ * apply any required changes to your new `package.mk`
+4. Find a place in the dependency tree
+ * when it extend an existing package, add it there to the `PKG_DEPENDS_TARGET`/`PKG_DEPENDS_HOST` etc.
+ * take a look into the path `packages/virtual`, there you should find a virtual packages, that match your new package (misc-packages should be the last option)
+5. Now you can build your image
+ * after the build, inside the `build-*` folder you should find a directory with your package name and -version, eg. `widget-1.2.3`.
## Example
```
@@ -196,25 +262,21 @@ post_makeinstall_target() {
PKG_NAME="mariadb-connector-c"
PKG_VERSION="3.0.2"
PKG_SHA256="f44f436fc35e081db3a56516de9e3bb11ae96838e75d58910be28ddd2bc56d88"
-PKG_ARCH="any"
PKG_LICENSE="LGPL"
PKG_SITE="https://mariadb.org/"
PKG_URL="https://github.com/MariaDB/mariadb-connector-c/archive/v$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain zlib openssl"
-PKG_SECTION="database"
-PKG_SHORTDESC="mariadb-connector: library to conntect to mariadb/mysql database server"
PKG_LONGDESC="mariadb-connector: library to conntect to mariadb/mysql database server"
+PKG_BUILD_FLAGS="-gold"
-PKG_CMAKE_OPTS_TARGET="-DWITH_EXTERNAL_ZLIB=ON
- -DAUTH_CLEARTEXT=STATIC
- -DAUTH_DIALOG=STATIC
- -DAUTH_OLDPASSWORD=STATIC
- -DREMOTEIO=OFF
- "
+PKG_CMAKE_OPTS_TARGET="-DWITH_EXTERNAL_ZLIB=ON \
+ -DAUTH_CLEARTEXT=STATIC \
+ -DAUTH_DIALOG=STATIC \
+ -DAUTH_OLDPASSWORD=STATIC \
+ -DREMOTEIO=OFF"
post_makeinstall_target() {
# drop all unneeded
rm -rf $INSTALL/usr
}
```
-
diff --git a/packages/security/libgcrypt/package.mk b/packages/security/libgcrypt/package.mk
index d86b6031bf..cb1fd1547c 100644
--- a/packages/security/libgcrypt/package.mk
+++ b/packages/security/libgcrypt/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libgcrypt"
PKG_VERSION="1.8.3"
@@ -13,12 +14,14 @@ PKG_TOOLCHAIN="autotools"
# libgcrypt-1.7.x fails to build with LTO support
# see for example https://bugs.gentoo.org/show_bug.cgi?id=581114
-PKG_CONFIGURE_OPTS_TARGET="CC_FOR_BUILD=$HOST_CC \
- ac_cv_sys_symbol_underscore=no \
- --enable-asm \
- --with-gnu-ld \
- --with-libgpg-error-prefix=$SYSROOT_PREFIX/usr \
- --disable-doc"
+pre_configure_target() {
+ PKG_CONFIGURE_OPTS_TARGET="CC_FOR_BUILD=$HOST_CC \
+ ac_cv_sys_symbol_underscore=no \
+ --enable-asm \
+ --with-gnu-ld \
+ --with-libgpg-error-prefix=$SYSROOT_PREFIX/usr \
+ --disable-doc"
+}
post_makeinstall_target() {
sed -e "s:\(['= ]\)\"/usr:\\1\"$SYSROOT_PREFIX/usr:g" -i src/$PKG_NAME-config
diff --git a/packages/security/libgpg-error/package.mk b/packages/security/libgpg-error/package.mk
index c92bbbaef3..a5bcf19002 100644
--- a/packages/security/libgpg-error/package.mk
+++ b/packages/security/libgpg-error/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libgpg-error"
PKG_VERSION="1.27"
@@ -10,9 +11,9 @@ PKG_URL="https://www.gnupg.org/ftp/gcrypt/libgpg-error/$PKG_NAME-$PKG_VERSION.ta
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="A library that defines common error values for all GnuPG components."
-PKG_CONFIGURE_OPTS_TARGET="CC_FOR_BUILD=$HOST_CC --enable-static --disable-shared --disable-nls --disable-rpath --with-gnu-ld --with-pic"
-
pre_configure_target() {
+ PKG_CONFIGURE_OPTS_TARGET="CC_FOR_BUILD=$HOST_CC --enable-static --disable-shared --disable-nls --disable-rpath --with-gnu-ld --with-pic"
+
# inspired by openembedded
case ${TARGET_ARCH} in
aarch64)
diff --git a/packages/sysutils/busybox/package.mk b/packages/sysutils/busybox/package.mk
index 8dd9226cfe..4d8b2fbd0a 100644
--- a/packages/sysutils/busybox/package.mk
+++ b/packages/sysutils/busybox/package.mk
@@ -15,22 +15,10 @@ PKG_LONGDESC="BusyBox combines tiny versions of many common UNIX utilities into
# busybox fails to build with GOLD support enabled with binutils-2.25
PKG_BUILD_FLAGS="-parallel -gold"
-PKG_MAKE_OPTS_HOST="ARCH=$TARGET_ARCH CROSS_COMPILE= KBUILD_VERBOSE=1 install"
-PKG_MAKE_OPTS_TARGET="ARCH=$TARGET_ARCH \
- HOSTCC=$HOST_CC \
- CROSS_COMPILE=$TARGET_PREFIX \
- KBUILD_VERBOSE=1 \
- install"
-PKG_MAKE_OPTS_INIT="ARCH=$TARGET_ARCH \
- HOSTCC=$HOST_CC \
- CROSS_COMPILE=$TARGET_PREFIX \
- KBUILD_VERBOSE=1 \
- install"
-
# nano text editor
- if [ "$NANO_EDITOR" = "yes" ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET nano"
- fi
+if [ "$NANO_EDITOR" = "yes" ]; then
+ PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET nano"
+fi
# nfs support
if [ "$NFS_SUPPORT" = yes ]; then
@@ -38,16 +26,30 @@ if [ "$NFS_SUPPORT" = yes ]; then
fi
pre_build_target() {
+ PKG_MAKE_OPTS_TARGET="ARCH=$TARGET_ARCH \
+ HOSTCC=$HOST_CC \
+ CROSS_COMPILE=$TARGET_PREFIX \
+ KBUILD_VERBOSE=1 \
+ install"
+
mkdir -p $PKG_BUILD/.$TARGET_NAME
cp -RP $PKG_BUILD/* $PKG_BUILD/.$TARGET_NAME
}
pre_build_host() {
+ PKG_MAKE_OPTS_HOST="ARCH=$TARGET_ARCH CROSS_COMPILE= KBUILD_VERBOSE=1 install"
+
mkdir -p $PKG_BUILD/.$HOST_NAME
cp -RP $PKG_BUILD/* $PKG_BUILD/.$HOST_NAME
}
pre_build_init() {
+ PKG_MAKE_OPTS_INIT="ARCH=$TARGET_ARCH \
+ HOSTCC=$HOST_CC \
+ CROSS_COMPILE=$TARGET_PREFIX \
+ KBUILD_VERBOSE=1 \
+ install"
+
mkdir -p $PKG_BUILD/.$TARGET_NAME-init
cp -RP $PKG_BUILD/* $PKG_BUILD/.$TARGET_NAME-init
}
diff --git a/packages/sysutils/diskdev_cmds/package.mk b/packages/sysutils/diskdev_cmds/package.mk
index d37cf8897c..d02f6cf026 100644
--- a/packages/sysutils/diskdev_cmds/package.mk
+++ b/packages/sysutils/diskdev_cmds/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="diskdev_cmds"
PKG_VERSION="332.14"
@@ -10,9 +11,9 @@ PKG_URL="http://www.opensource.apple.com/tarballs/diskdev_cmds/$PKG_NAME-$PKG_VE
PKG_DEPENDS_TARGET="toolchain openssl"
PKG_LONGDESC="The fsck and mkfs utliities for hfs and hfsplus filesystems."
-PKG_MAKE_OPTS_TARGET="-f Makefile.lnx CC=$CC"
-
pre_make_target() {
+ PKG_MAKE_OPTS_TARGET="-f Makefile.lnx CC=$CC"
+
export CFLAGS="$TARGET_CFLAGS -g3 -Wall -I$PKG_BUILD/include -DDEBUG_BUILD=0 -D_FILE_OFFSET_BITS=64 -D LINUX=1 -D BSD=1"
}
diff --git a/packages/sysutils/e2fsprogs/package.mk b/packages/sysutils/e2fsprogs/package.mk
index efd618c579..0daafc5b05 100644
--- a/packages/sysutils/e2fsprogs/package.mk
+++ b/packages/sysutils/e2fsprogs/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="e2fsprogs"
PKG_VERSION="1.43.9"
@@ -20,32 +21,37 @@ PKG_CONFIGURE_OPTS_HOST="--prefix=$TOOLCHAIN/ \
--bindir=$TOOLCHAIN/bin \
--sbindir=$TOOLCHAIN/sbin"
-PKG_CONFIGURE_OPTS_TARGET="BUILD_CC=$HOST_CC \
- --enable-verbose-makecmds \
- --enable-symlink-install \
- --enable-symlink-build \
- --disable-elf-shlibs \
- --disable-bsd-shlibs \
- --disable-profile \
- --disable-jbd-debug \
- --disable-blkid-debug \
- --disable-testio-debug \
- --enable-libuuid \
- --enable-libblkid \
- --disable-debugfs \
- --disable-imager \
- --enable-resizer \
- --enable-fsck \
- --disable-e2initrd-helper \
- --enable-tls \
- --disable-uuidd \
- --disable-nls \
- --disable-rpath \
- --disable-fuse2fs \
- --with-gnu-ld"
+pre_configure_target() {
+ PKG_CONFIGURE_OPTS_TARGET="BUILD_CC=$HOST_CC \
+ --enable-verbose-makecmds \
+ --enable-symlink-install \
+ --enable-symlink-build \
+ --disable-elf-shlibs \
+ --disable-bsd-shlibs \
+ --disable-profile \
+ --disable-jbd-debug \
+ --disable-blkid-debug \
+ --disable-testio-debug \
+ --enable-libuuid \
+ --enable-libblkid \
+ --disable-debugfs \
+ --disable-imager \
+ --enable-resizer \
+ --enable-fsck \
+ --disable-e2initrd-helper \
+ --enable-tls \
+ --disable-uuidd \
+ --disable-nls \
+ --disable-rpath \
+ --disable-fuse2fs \
+ --with-gnu-ld"
+}
-PKG_CONFIGURE_OPTS_INIT="$PKG_CONFIGURE_OPTS_TARGET"
+pre_configure_init() {
+ pkg_call pre_configure_target || die "pre_configure_target not found"
+ PKG_CONFIGURE_OPTS_INIT="$PKG_CONFIGURE_OPTS_TARGET"
+}
post_makeinstall_target() {
make -C lib/et LIBMODE=644 DESTDIR=$SYSROOT_PREFIX install
diff --git a/packages/sysutils/tz/package.mk b/packages/sysutils/tz/package.mk
index abf7899ffd..2cfb68959a 100644
--- a/packages/sysutils/tz/package.mk
+++ b/packages/sysutils/tz/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="tz"
PKG_VERSION="2018c"
@@ -10,7 +11,9 @@ PKG_URL="https://github.com/eggert/tz/archive/$PKG_VERSION.tar.gz"
PKG_DEPENDS_TARGET="toolchain"
PKG_LONGDESC="Time zone and daylight-saving time data."
-PKG_MAKE_OPTS_TARGET="CC=$HOST_CC LDFLAGS="
+pre_configure_target() {
+ PKG_MAKE_OPTS_TARGET="CC=$HOST_CC LDFLAGS="
+}
makeinstall_target() {
make TZDIR="$INSTALL/usr/share/zoneinfo" REDO=posix_only TOPDIR="$INSTALL" install
diff --git a/packages/sysutils/v86d/package.mk b/packages/sysutils/v86d/package.mk
index 43be0e2437..2a2355d494 100644
--- a/packages/sysutils/v86d/package.mk
+++ b/packages/sysutils/v86d/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="v86d"
PKG_VERSION="0.1.10"
@@ -11,9 +12,9 @@ PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.bz2"
PKG_DEPENDS_INIT="toolchain gcc:init"
PKG_LONGDESC="v86d is the userspace helper that runs x86 code in an emulated environment."
-INIT_CONFIGURE_OPTS="--with-x86emu"
-
pre_configure_init() {
+ INIT_CONFIGURE_OPTS="--with-x86emu"
+
# v86d fails to build in subdirs
cd $PKG_BUILD
rm -rf .$TARGET_NAME-init
diff --git a/packages/tools/bcm2835-bootloader/release b/packages/tools/bcm2835-bootloader/release
index 631e9838cf..fbf9e5c545 100755
--- a/packages/tools/bcm2835-bootloader/release
+++ b/packages/tools/bcm2835-bootloader/release
@@ -2,8 +2,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
-
-. config/options $1
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
mkdir -p $RELEASE_DIR/3rdparty/bootloader
cp -PR $BUILD/bcm2835-bootloader-*/LICENCE* $RELEASE_DIR/3rdparty/bootloader/
diff --git a/packages/tools/grub/package.mk b/packages/tools/grub/package.mk
index 8516d8f258..9c660e855d 100755
--- a/packages/tools/grub/package.mk
+++ b/packages/tools/grub/package.mk
@@ -12,19 +12,19 @@ PKG_DEPENDS_TARGET="toolchain flex freetype:host"
PKG_LONGDESC="GRUB is a Multiboot boot loader."
PKG_TOOLCHAIN="configure"
-PKG_CONFIGURE_OPTS_TARGET="--target=i386-pc-linux \
- --disable-nls \
- --with-platform=efi"
+pre_configure_target() {
+ PKG_CONFIGURE_OPTS_TARGET="--target=i386-pc-linux \
+ --disable-nls \
+ --with-platform=efi"
unset CFLAGS
unset CPPFLAGS
unset CXXFLAGS
unset LDFLAGS
-
-pre_configure_target() {
unset CPP
+
cd $PKG_BUILD
- ./autogen.sh
+ ./autogen.sh
}
make_target() {
diff --git a/packages/tools/qemu/package.mk b/packages/tools/qemu/package.mk
index a0258c8aba..6ee2649d5c 100644
--- a/packages/tools/qemu/package.mk
+++ b/packages/tools/qemu/package.mk
@@ -10,19 +10,21 @@ PKG_URL="https://download.qemu.org/qemu-$PKG_VERSION.tar.xz"
PKG_DEPENDS_HOST="toolchain glib:host pixman:host Python2:host zlib:host"
PKG_LONGDESC="QEMU is a generic and open source machine emulator and virtualizer."
-HOST_CONFIGURE_OPTS="--bindir=$TOOLCHAIN/bin \
- --extra-cflags=-I$TOOLCHAIN/include \
- --extra-ldflags=-L$TOOLCHAIN/lib \
- --libexecdir=$TOOLCHAIN/lib \
- --localstatedir=$TOOLCHAIN/var \
- --prefix=$TOOLCHAIN \
- --sbindir=$TOOLCHAIN/sbin \
- --static \
- --sysconfdir=$TOOLCHAIN/etc \
- --disable-blobs \
- --disable-docs \
- --disable-gcrypt \
- --disable-system \
- --disable-user \
- --disable-vnc \
- --disable-werror"
+pre_configure_host() {
+ HOST_CONFIGURE_OPTS="--bindir=$TOOLCHAIN/bin \
+ --extra-cflags=-I$TOOLCHAIN/include \
+ --extra-ldflags=-L$TOOLCHAIN/lib \
+ --libexecdir=$TOOLCHAIN/lib \
+ --localstatedir=$TOOLCHAIN/var \
+ --prefix=$TOOLCHAIN \
+ --sbindir=$TOOLCHAIN/sbin \
+ --static \
+ --sysconfdir=$TOOLCHAIN/etc \
+ --disable-blobs \
+ --disable-docs \
+ --disable-gcrypt \
+ --disable-system \
+ --disable-user \
+ --disable-vnc \
+ --disable-werror"
+}
diff --git a/packages/tools/syslinux/package.mk b/packages/tools/syslinux/package.mk
index 608dd59b93..f47bcee789 100644
--- a/packages/tools/syslinux/package.mk
+++ b/packages/tools/syslinux/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="syslinux"
PKG_VERSION="6.03"
@@ -12,13 +13,15 @@ PKG_DEPENDS_HOST="util-linux:host"
PKG_DEPENDS_TARGET="toolchain util-linux e2fsprogs syslinux:host"
PKG_LONGDESC="The SYSLINUX project covers lightweight linux bootloaders."
-PKG_MAKE_OPTS_TARGET="CC=$CC AR=$AR RANLIB=$RANLIB installer"
+pre_configure_target() {
+ PKG_MAKE_OPTS_TARGET="CC=$CC AR=$AR RANLIB=$RANLIB installer"
# Unset all compiler FLAGS
unset CFLAGS
unset CPPFLAGS
unset CXXFLAGS
unset LDFLAGS
+}
pre_build_target() {
mkdir -p $PKG_BUILD/.$TARGET_NAME
diff --git a/packages/virtual/initramfs/package.mk b/packages/virtual/initramfs/package.mk
index 456109f485..ef17f196ce 100644
--- a/packages/virtual/initramfs/package.mk
+++ b/packages/virtual/initramfs/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="initramfs"
PKG_VERSION=""
@@ -15,8 +16,6 @@ if [ "$ISCSI_SUPPORT" = yes ]; then
fi
if [ "$INITRAMFS_PARTED_SUPPORT" = yes ]; then
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET util-linux:init"
- PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET e2fsprogs:init"
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET parted:init"
fi
diff --git a/packages/x11/lib/libpciaccess/package.mk b/packages/x11/lib/libpciaccess/package.mk
index cc7fee9503..7a5b9a92c1 100644
--- a/packages/x11/lib/libpciaccess/package.mk
+++ b/packages/x11/lib/libpciaccess/package.mk
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
+# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="libpciaccess"
PKG_VERSION="0.14"
@@ -10,8 +11,10 @@ PKG_URL="http://xorg.freedesktop.org/archive/individual/lib/$PKG_NAME-$PKG_VERSI
PKG_DEPENDS_TARGET="toolchain util-macros zlib"
PKG_LONGDESC="X.org libpciaccess library."
-CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE"
-
PKG_CONFIGURE_OPTS_TARGET="ac_cv_header_asm_mtrr_h=set \
--with-pciids-path=/usr/share \
--with-zlib "
+
+pre_configure_target() {
+ CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE"
+}
diff --git a/projects/Amlogic/bootloader/release b/projects/Amlogic/bootloader/release
index 68bedc70c7..5bd680e6fb 100755
--- a/projects/Amlogic/bootloader/release
+++ b/projects/Amlogic/bootloader/release
@@ -3,7 +3,5 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
-. config/options $1
-
mkdir -p $RELEASE_DIR/3rdparty/bootloader
-cp -a $INSTALL/usr/share/bootloader/* $RELEASE_DIR/3rdparty/bootloader
+ cp -a $INSTALL/usr/share/bootloader/* $RELEASE_DIR/3rdparty/bootloader
diff --git a/scripts/build b/scripts/build
index d0bde014ca..9032474dd3 100755
--- a/scripts/build
+++ b/scripts/build
@@ -4,29 +4,29 @@
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
-. config/options $1
-
-if [ "$1" = "--all" ]; then
- if [ -n "$2" ]; then
- for build_dir in $(ls -1d ${ROOT}/build.*); do
- load_build_config ${build_dir} && ./scripts/build $2
- done
- fi
- exit 0
-fi
+. config/options "$1"
if [ -z "$1" ]; then
die "usage: $0 package_name[:]"
fi
-if [ ! -f $PKG_DIR/package.mk ]; then
- die "$(print_color CLR_ERROR "$1: no package.mk file found")"
+if [ "$1" = "--all" ]; then
+ if [ -n "$2" ]; then
+ for build_dir in $(ls -1d ${ROOT}/build.*); do
+ load_build_config ${build_dir} && ${SCRIPTS}/build "$2"
+ done
+ fi
+ exit 0
fi
-# set defaults
-PKG_CONFIGURE_SCRIPT=""
-PKG_MAKE_OPTS=""
-PKG_MAKEINSTALL_OPTS=""
+if [ -z "${PKG_NAME}" ]; then
+ die "$(print_color CLR_ERROR "${1}: no package.mk file found")"
+fi
+
+if [ -n "$PKG_ARCH" ]; then
+ listcontains "$PKG_ARCH" "!$TARGET_ARCH" && exit 0
+ listcontains "$PKG_ARCH" "$TARGET_ARCH" || listcontains "$PKG_ARCH" "any" || exit 0
+fi
if [ "${1//:/}" != "${1}" ]; then
PACKAGE_NAME="${1%:*}"
@@ -37,19 +37,9 @@ else
fi
TARGET="${TARGET:-target}"
-if [ -n "$PKG_ARCH" ]; then
- listcontains "$PKG_ARCH" "!$TARGET_ARCH" && exit 0
- listcontains "$PKG_ARCH" "$TARGET_ARCH" || listcontains "$PKG_ARCH" "any" || exit 0
-fi
-
-unset INSTALL
-
mkdir -p $STAMPS/$PACKAGE_NAME
STAMP=$STAMPS/$PACKAGE_NAME/build_$TARGET
-
-$SCRIPTS/unpack $PACKAGE_NAME
-
-if [ -f $STAMP ] ; then
+if [ -f $STAMP ]; then
. $STAMP
PKG_DEEPHASH=$(calculate_stamp)
if [ ! "$PKG_DEEPHASH" = "$STAMP_PKG_DEEPHASH" ]; then
@@ -58,62 +48,57 @@ if [ -f $STAMP ] ; then
rm -f $STAMP
elif [ "$1" = "u-boot" -a ! "$UBOOT_SYSTEM" = "$STAMP_UBOOT_SYSTEM" ]; then
rm -f $STAMP
+ else
+ # stamp matched: already built, do nothing
+ exit 0
fi
fi
-if [ -f $STAMP ]; then
- # already build, do nothing
+$SCRIPTS/unpack $PACKAGE_NAME
+
+# build dependencies, only when PKG_DEPENDS_? is filled
+unset _pkg_depends
+case "$TARGET" in
+ "target") _pkg_depends="$PKG_DEPENDS_TARGET";;
+ "host") _pkg_depends="$PKG_DEPENDS_HOST";;
+ "init") _pkg_depends="$PKG_DEPENDS_INIT";;
+ "bootstrap") _pkg_depends="$PKG_DEPENDS_BOOTSTRAP";;
+esac
+for p in $_pkg_depends; do
+ $SCRIPTS/build $p
+done
+
+# build this package
+if [ "${BUILD_WITH_DEBUG}" = "yes" ]; then
+ build_msg "CLR_BUILD" "BUILD" "${PACKAGE_NAME} $(print_color "CLR_TARGET" "(${TARGET})") [DEBUG]" "indent"
+else
+ build_msg "CLR_BUILD" "BUILD" "${PACKAGE_NAME} $(print_color "CLR_TARGET" "(${TARGET})")" "indent"
+fi
+
+# virtual packages are not built as they only contain dependencies, so dont go further here
+if [ "$PKG_SECTION" = "virtual" ]; then
+ PKG_DEEPHASH=$(calculate_stamp)
+ for i in PKG_NAME PKG_DEEPHASH BUILD_WITH_DEBUG; do
+ echo "STAMP_$i=\"${!i}\"" >> $STAMP
+ done
+
exit 0
fi
-rm -f $STAMP
setup_toolchain $TARGET
-# unset functions
-unset -f configure_package
-unset -f pre_build_target
-unset -f pre_configure_target
-unset -f configure_target
-unset -f post_configure_target
-unset -f pre_make_target
-unset -f make_target
-unset -f post_make_target
-unset -f pre_makeinstall_target
-unset -f makeinstall_target
-unset -f post_makeinstall_target
-
-unset -f pre_build_host
-unset -f pre_configure_host
-unset -f configure_host
-unset -f post_configure_host
-unset -f pre_make_host
-unset -f make_host
-unset -f post_make_host
-unset -f pre_makeinstall_host
-unset -f makeinstall_host
-unset -f post_makeinstall_host
-
-unset -f pre_build_init
-unset -f pre_configure_init
-unset -f configure_init
-unset -f post_configure_init
-unset -f pre_make_init
-unset -f make_init
-unset -f post_make_init
-unset -f pre_makeinstall_init
-unset -f makeinstall_init
-unset -f post_makeinstall_init
-
-unset -f pre_build_bootstrap
-unset -f pre_configure_bootstrap
-unset -f configure_bootstrap
-unset -f post_configure_bootstrap
-unset -f pre_make_bootstrap
-unset -f make_bootstrap
-unset -f post_make_bootstrap
-unset -f pre_makeinstall_bootstrap
-unset -f makeinstall_bootstrap
-unset -f post_makeinstall_bootstrap
+# configure install directory
+if [ "$TARGET" = "target" ]; then
+ INSTALL="$PKG_BUILD/.install_pkg"
+elif [ "$TARGET" = "init" ]; then
+ INSTALL="$PKG_BUILD/.install_init"
+else
+ unset INSTALL
+fi
+# remove previous install files
+if [ -n "$INSTALL" -a -d "$INSTALL" ]; then
+ rm -rf "$INSTALL"
+fi
# configure debug build defaults
if [ "${BUILD_WITH_DEBUG}" = "yes" ]; then
@@ -124,6 +109,9 @@ else
MESON_BUILD_TYPE="plain"
fi
+CMAKE_GENERATOR_NINJA="-GNinja \
+ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
+
# configure TARGET build defaults
TARGET_CONFIGURE_OPTS="--host=$TARGET_NAME \
--build=$HOST_NAME \
@@ -137,9 +125,6 @@ TARGET_CONFIGURE_OPTS="--host=$TARGET_NAME \
--disable-static \
--enable-shared"
-CMAKE_GENERATOR_NINJA="-GNinja \
- -DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
-
TARGET_CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=$CMAKE_CONF \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE"
@@ -188,62 +173,10 @@ BOOTSTRAP_CONFIGURE_OPTS="$HOST_CONFIGURE_OPTS"
BOOTSTRAP_CMAKE_OPTS="$HOST_CMAKE_OPTS"
BOOTSTRAP_MESON_OPTS="$HOST_MESON_OPTS"
-# include buildfile
-. $PKG_DIR/package.mk
-
-# finalise package configuration
-pkg_call_optional configure_package
-
-# build dependencies, only when PKG_DEPENDS_? is filled
-unset _pkg_depends
-case "$TARGET" in
- "target") _pkg_depends="$PKG_DEPENDS_TARGET";;
- "host") _pkg_depends="$PKG_DEPENDS_HOST";;
- "init") _pkg_depends="$PKG_DEPENDS_INIT";;
- "bootstrap") _pkg_depends="$PKG_DEPENDS_BOOTSTRAP";;
-esac
-for p in $_pkg_depends; do
- $SCRIPTS/build $p
-done
-
-if [ "${BUILD_WITH_DEBUG}" = "yes" ]; then
- build_msg "CLR_BUILD" "BUILD" "${PACKAGE_NAME} $(print_color "CLR_TARGET" "(${TARGET})") [DEBUG]" "indent"
-else
- build_msg "CLR_BUILD" "BUILD" "${PACKAGE_NAME} $(print_color "CLR_TARGET" "(${TARGET})")" "indent"
-fi
-
-# virtual packages dont must be build, they only contains dependencies, so dont go further here
-if [ "$PKG_SECTION" = "virtual" ]; then
- PKG_DEEPHASH=$(calculate_stamp)
- for i in PKG_NAME PKG_DEEPHASH BUILD_WITH_DEBUG; do
- echo "STAMP_$i=\"${!i}\"" >> $STAMP
- done
-
- exit 0
-fi
-
-# configure other variables
-if [ "$TARGET" = "target" ]; then
- INSTALL="$PKG_BUILD/.install_pkg"
-elif [ "$TARGET" = "init" ]; then
- INSTALL="$PKG_BUILD/.install_init"
-fi
-
-# clear previous image files
-if [ -n "$INSTALL" -a -d "$INSTALL" ]; then
- rm -rf "$INSTALL"
-fi
-
# setup configure scripts
-if [ -z "$PKG_CONFIGURE_SCRIPT" ]; then
- PKG_CONFIGURE_SCRIPT="$PKG_BUILD/configure"
-else
- PKG_CONFIGURE_SCRIPT="$PKG_BUILD/$PKG_CONFIGURE_SCRIPT"
-fi
-
-PKG_CMAKE_SCRIPT="${PKG_CMAKE_SCRIPT:-$PKG_BUILD/CMakeLists.txt}"
-
-PKG_MESON_SCRIPT="${PKG_MESON_SCRIPT:-$PKG_BUILD/meson.build}"
+PKG_CONFIGURE_SCRIPT="${PKG_CONFIGURE_SCRIPT:-${PKG_BUILD}/configure}"
+PKG_CMAKE_SCRIPT="${PKG_CMAKE_SCRIPT:-${PKG_BUILD}/CMakeLists.txt}"
+PKG_MESON_SCRIPT="${PKG_MESON_SCRIPT:-${PKG_BUILD}/meson.build}"
# auto detect toolchain
_auto_toolchain=""
@@ -516,7 +449,6 @@ PKG_DEEPHASH=$(calculate_stamp)
for i in PKG_NAME PKG_DEEPHASH BUILD_WITH_DEBUG; do
echo "STAMP_$i=\"${!i}\"" >> $STAMP
done
-
if [ "$1" = "u-boot" ]; then
echo "STAMP_UBOOT_SYSTEM=\"${UBOOT_SYSTEM}\"" >> $STAMP
fi
diff --git a/scripts/install b/scripts/install
index b1797d7478..d9e0bfa35a 100755
--- a/scripts/install
+++ b/scripts/install
@@ -5,16 +5,25 @@
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
-. config/options $1
+. config/options "$1"
if [ -z "$1" ]; then
die "usage: $0 package_name"
fi
+if [ -z "${PKG_NAME}" ]; then
+ die "$(print_color CLR_ERROR "${1}: no package.mk file found")"
+fi
+
if [ -z "$INSTALL" ] ; then
die "error: '\$INSTALL' not set! this script is not intended to be run manually"
fi
+if [ -n "$PKG_ARCH" ]; then
+ listcontains "$PKG_ARCH" "!$TARGET_ARCH" && exit 0
+ listcontains "$PKG_ARCH" "$TARGET_ARCH" || listcontains "$PKG_ARCH" "any" || exit 0
+fi
+
# set defaults
if [ "${1//:/}" != "${1}" ]; then
PACKAGE_NAME="${1%:*}"
@@ -26,23 +35,12 @@ fi
[ -z "$TARGET" ] && TARGET="target"
STAMP=$STAMPS_INSTALL/$PACKAGE_NAME/install_$TARGET
-mkdir -p $STAMPS_INSTALL/$PACKAGE_NAME
-
[ -f $STAMP ] && exit 0
-if [ -n "$PKG_ARCH" ]; then
- listcontains "$PKG_ARCH" "!$TARGET_ARCH" && exit 0
- listcontains "$PKG_ARCH" "$TARGET_ARCH" || listcontains "$PKG_ARCH" "any" || exit 0
-fi
-
-if [ ! -f $PKG_DIR/package.mk ]; then
- die "$(print_color CLR_ERROR "${PACKAGE_NAME}: no package.mk file found")"
-fi
+mkdir -p $STAMPS_INSTALL/$PACKAGE_NAME
$SCRIPTS/build $@
-build_msg "CLR_INSTALL" "INSTALL" "${PACKAGE_NAME} $(print_color CLR_TARGET "(${TARGET})")" "indent"
-
if [ "$TARGET" = target ] ; then
for p in $PKG_DEPENDS_TARGET; do
$SCRIPTS/install $p
@@ -54,6 +52,8 @@ elif [ "$TARGET" = init ] ; then
INSTALL=$BUILD/initramfs
fi
+build_msg "CLR_INSTALL" "INSTALL" "${PACKAGE_NAME} $(print_color CLR_TARGET "(${TARGET})")" "indent"
+
mkdir -p $INSTALL
if [ "$TARGET" = target ] ; then
@@ -121,23 +121,14 @@ if [ "$TARGET" = target ] ; then
done
fi
-# unset functions
-unset -f pre_install
-unset -f post_install
-
-# include buildfile
-. $PKG_DIR/package.mk
-
# install
if [ "$TARGET" = target ] ; then
pkg_call_optional pre_install
fi
if [ "$TARGET" = "target" -a -d $PKG_BUILD/.install_pkg ]; then
- mkdir -p $INSTALL
cp -PR $PKG_BUILD/.install_pkg/* $INSTALL
elif [ "$TARGET" = "init" -a -d $PKG_BUILD/.install_init ]; then
- mkdir -p $INSTALL
cp -PR $PKG_BUILD/.install_init/* $INSTALL
fi
diff --git a/scripts/uninstall b/scripts/uninstall
deleted file mode 100755
index db179e1de6..0000000000
--- a/scripts/uninstall
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/bash
-
-# SPDX-License-Identifier: GPL-2.0-or-later
-# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
-
-. config/options $1
-
-if [ -z "$1" ]; then
- echo "usage: $0 package_name[:]"
- exit 1
-fi
-
-if [ "${1//:/}" != "${1}" ]; then
- PACKAGE_NAME="${1%:*}"
- TARGET="${1#*:}"
-else
- PACKAGE_NAME=$1
- TARGET=
-fi
-[ -z "$TARGET" ] && TARGET="target"
-
-if [ -n "$PKG_ARCH" ]; then
- listcontains "$PKG_ARCH" "!$TARGET_ARCH" && exit 0
- listcontains "$PKG_ARCH" "$TARGET_ARCH" || listcontains "$PKG_ARCH" "any" || exit 0
-fi
-
-STAMP=$STAMPS/$PACKAGE_NAME/build_$TARGET
-
-if [ -f $STAMP ]; then
-
- # include buildfile
- . $PKG_DIR/package.mk
-
- # virtual packages dont must be build, they only contains dependencies, so dont go further here
- if [ ! "$PKG_SECTION" = "virtual" ]; then
-
- # setup configure script
- if [ -z "$PKG_CONFIGURE_SCRIPT" ]; then
- PKG_CONFIGURE_SCRIPT="$PKG_BUILD/configure"
- else
- PKG_CONFIGURE_SCRIPT="$PKG_BUILD/$PKG_CONFIGURE_SCRIPT"
- fi
- if [ -z "$PKG_CMAKE_SCRIPT" ]; then
- PKG_CMAKE_SCRIPT="$PKG_BUILD/CMakeLists.txt"
- else
- PKG_CMAKE_SCRIPT="$PKG_BUILD/$PKG_CMAKE_SCRIPT"
- fi
-
- # ensure $PKG_BUILD is there. (installer? PKG_URL="")
- if [ ! -d $PKG_BUILD ] ; then
- exit 0
- fi
-
- cd $PKG_BUILD
-
- if [ "$TARGET" = "target" ]; then
- if [ -f "$PKG_CONFIGURE_SCRIPT" -o -f "$PKG_CMAKE_SCRIPT" ]; then
- cd .$TARGET_NAME
- fi
- elif [ "$TARGET" = "host" ]; then
- if [ -f "$PKG_CONFIGURE_SCRIPT" -o -f "$PKG_CMAKE_SCRIPT" ]; then
- cd .$HOST_NAME
- fi
- elif [ "$TARGET" = "init" ]; then
- if [ -f "$PKG_CONFIGURE_SCRIPT" -o -f "$PKG_CMAKE_SCRIPT" ]; then
- cd .$TARGET_NAME-init
- fi
- elif [ "$TARGET" = "bootstrap" ]; then
- if [ -f "$PKG_CONFIGURE_SCRIPT" -o -f "$PKG_CMAKE_SCRIPT" ]; then
- cd .$TARGET_NAME-bootstrap
- fi
- fi
-
- MAKEUNINSTALL="$TOOLCHAIN/bin/make -j1 DESTDIR=$SYSROOT_PREFIX uninstall"
-
- if [ "$TARGET" = "target" ]; then
- $MAKEUNINSTALL $PKG_MAKEINSTALL_OPTS_TARGET
- elif [ "$TARGET" = "host" ]; then
- make uninstall $PKG_MAKEINSTALL_OPTS_HOST
- elif [ "$TARGET" = "init" ]; then
- make uninstall DESTDIR=$INSTALL $PKG_MAKEINSTALL_OPTS_INIT
- elif [ "$TARGET" = "bootstrap" ]; then
- $MAKEUNINSTALL $PKG_MAKEINSTALL_OPTS_BOOTSTRAP
- fi
-
- cd $ROOT
- fi # ! "$PKG_SECTION" = "virtual"
-
- if [ -f "$STAMP" ]; then
- rm -f $STAMP
- fi
-
-fi
diff --git a/scripts/unpack b/scripts/unpack
index ea95857afd..3dce2c42d2 100755
--- a/scripts/unpack
+++ b/scripts/unpack
@@ -4,14 +4,14 @@
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
-. config/options $1
+. config/options "$1"
if [ -z "$1" ]; then
die "usage: $0 package_name"
fi
-if [ ! -f $PKG_DIR/package.mk ]; then
- die "$(print_color CLR_ERROR "$1: no package.mk file found")"
+if [ -z "${PKG_NAME}" ]; then
+ die "$(print_color CLR_ERROR "${1}: no package.mk file found")"
fi
$SCRIPTS/get $1
@@ -44,15 +44,6 @@ fi
if [ -d "$SOURCES/$1" -o -d "$PKG_DIR/sources" ]; then
build_msg "CLR_UNPACK" "UNPACK" "${1}" "indent"
- # unset functions
- unset -f pre_unpack
- unset -f unpack
- unset -f post_unpack
- unset -f pre_patch
- unset -f post_patch
-
- . $PKG_DIR/package.mk
-
pkg_call_optional pre_unpack
if ! pkg_call unpack; then