mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
- adding eglibc as default libc, with this some bugs are fixed. We also can use binary drivers and can have vdpau support (will be included later).
271 lines
6.9 KiB
Plaintext
271 lines
6.9 KiB
Plaintext
set -e
|
|
|
|
test -f config/target-$TARGET_PLATFORM && . config/target-$TARGET_PLATFORM
|
|
|
|
# determine architecture's family
|
|
case $TARGET_ARCH in
|
|
i386)
|
|
TARGET_FAMILY=i686
|
|
;;
|
|
|
|
x86_64)
|
|
TARGET_FAMILY=x86_64
|
|
;;
|
|
esac
|
|
|
|
case $TARGET_LIBC in
|
|
uClibc)
|
|
TARGET_NAME=$TARGET_FAMILY-openelec-linux-uclibc
|
|
;;
|
|
|
|
eglibc)
|
|
TARGET_NAME=$TARGET_FAMILY-openelec-linux-gnu
|
|
;;
|
|
esac
|
|
|
|
# determines TARGET_CPU, if not forced by user
|
|
if [ -z "$TARGET_CPU" ]; then
|
|
case $TARGET_ARCH in
|
|
i386)
|
|
TARGET_CPU=generic
|
|
;;
|
|
|
|
x86_64)
|
|
TARGET_CPU=generic
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
OPENELEC_VERSION=`cat VERSION`
|
|
CONFIG=config
|
|
SCRIPTS=scripts
|
|
PACKAGES=packages
|
|
SOURCES=sources
|
|
BUILD_BASE=build
|
|
BUILD=$BUILD_BASE.OpenELEC-$PROJECT.$TARGET_ARCH-$TARGET_LIBC.$OPENELEC_VERSION
|
|
[ -n "$TARGET_PLATFORM" ] && BUILD=$BUILD.$TARGET_PLATFORM
|
|
PKG_BUILD=$BUILD/$1\[-_][0-9\|\<svn\>\|\<git\>]*
|
|
#PKG_DIR=`find $PACKAGES -type d -name $1 -not -regex ".*cinit.*"`
|
|
STAMPS_NOARCH=.stamps
|
|
STAMPS=$BUILD/$STAMPS_NOARCH
|
|
DOCS=DOCS
|
|
ROOT=`pwd`
|
|
PROJECT_DIR=$ROOT/projects
|
|
TOOLCHAIN=$BUILD/toolchain
|
|
SYSROOT_PREFIX=$ROOT/$TOOLCHAIN/$TARGET_NAME/sysroot
|
|
LIB_PREFIX=$SYSROOT_PREFIX/usr
|
|
TARGET_PREFIX=$ROOT/$TOOLCHAIN/bin/$TARGET_NAME-
|
|
|
|
if [ "$OPENELEC_VERSION" = devel ]; then
|
|
DEBUG=no
|
|
DEVTOOLS=yes
|
|
elif [ "$OPENELEC_VERSION" = debug ]; then
|
|
DEBUG=yes
|
|
DEVTOOLS=yes
|
|
fi
|
|
|
|
HOST_NAME_CACHE=$BUILD/configtools/host_name
|
|
if [ -f $HOST_NAME_CACHE ]; then
|
|
HOST_NAME=`cat $HOST_NAME_CACHE`
|
|
elif [ -x $BUILD/configtools/config.guess ]; then
|
|
HOST_NAME=`$BUILD/configtools/config.guess`
|
|
fi
|
|
|
|
MAKE="$ROOT/$TOOLCHAIN/bin/make"
|
|
MAKEINSTALL="$ROOT/$TOOLCHAIN/bin/make DESTDIR=$SYSROOT_PREFIX install"
|
|
SED="sed -i"
|
|
|
|
XORG_PATH_ENCODINGS=/usr/share/X11/encodings
|
|
XORG_PATH_FONTS=/usr/share/X11/fonts
|
|
XORG_PATH_MAPS=$XORG_PATH_FONTS/util
|
|
XORG_PATH_DRI=/usr/lib/dri
|
|
XORG_PATH_XKB=/usr/share/X11/xkb
|
|
XORG_PATH_XKB_OUTPUT=/var/lib/xkb
|
|
XORG_PATH_RGB=/usr/lib/X11/rgb
|
|
XORG_PATH_MODULES=/usr/lib/xorg/modules
|
|
XORG_PATH_DRIVERS=/usr/lib/xorg/modules/drivers
|
|
|
|
TOOLCHAIN_LANGUAGES=c
|
|
[ "$TOOLCHAIN_CXX" = yes ] && TOOLCHAIN_LANGUAGES=${TOOLCHAIN_LANGUAGES},c++
|
|
|
|
[ "$OPTIMIZATIONS" = speed ] && GCC_OPTIM="-O3" || GCC_OPTIM="-Os"
|
|
|
|
TARGET_CC=${TARGET_PREFIX}gcc
|
|
TARGET_CXX=${TARGET_PREFIX}g++
|
|
TARGET_LD=${TARGET_PREFIX}ld
|
|
TARGET_AS=${TARGET_PREFIX}as
|
|
TARGET_AR=${TARGET_PREFIX}ar
|
|
TARGET_NM=${TARGET_PREFIX}nm
|
|
TARGET_RANLIB=${TARGET_PREFIX}ranlib
|
|
TARGET_OBJCOPY=${TARGET_PREFIX}objcopy
|
|
TARGET_STRIP=${TARGET_PREFIX}strip
|
|
TARGET_CPPFLAGS=
|
|
TARGET_CFLAGS="$GCC_OPTIM -Wall -pipe -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -mtune=$TARGET_CPU"
|
|
TARGET_CXXFLAGS="$TARGET_CFLAGS"
|
|
TARGET_LDFLAGS=
|
|
|
|
case $TARGET_ARCH in
|
|
i386)
|
|
TARGET_CFLAGS="$TARGET_CFLAGS -march=$TARGET_FAMILY"
|
|
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -march=$TARGET_FAMILY"
|
|
;;
|
|
powerpc|powerpc64|x86_64)
|
|
TARGET_CFLAGS="$TARGET_CFLAGS -fPIC"
|
|
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -fPIC"
|
|
;;
|
|
esac
|
|
|
|
if [ "$DEBUG" = yes ]; then
|
|
TARGET_CFLAGS="$TARGET_CFLAGS -ggdb"
|
|
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -ggdb"
|
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -ggdb"
|
|
else
|
|
TARGET_CFLAGS="$TARGET_CFLAGS -s -fomit-frame-pointer"
|
|
TARGET_CXXFLAGS="$TARGET_CXXFLAGS -s -fomit-frame-pointer"
|
|
TARGET_LDFLAGS="$TARGET_LDFLAGS -s"
|
|
fi
|
|
|
|
HOST_AWK=gawk
|
|
HOST_CC=$ROOT/$TOOLCHAIN/bin/host-gcc
|
|
HOST_CXX=$ROOT/$TOOLCHAIN/bin/host-g++
|
|
HOST_LD=ld
|
|
HOST_AS=as
|
|
HOST_AR=ar
|
|
HOST_NM=nm
|
|
HOST_RANLIB=ranlib
|
|
HOST_OBJCOPY=objcopy
|
|
HOST_STRIP=strip
|
|
HOST_CPPFLAGS=""
|
|
HOST_CFLAGS="-O2 -Wall -pipe -I$ROOT/$TOOLCHAIN/include"
|
|
HOST_LDFLAGS="-L$ROOT/$TOOLCHAIN/lib"
|
|
HOST_PKG_CONFIG_PATH="$ROOT/$TOOLCHAIN/lib/pkgconfig"
|
|
|
|
export CCACHE_DIR=$ROOT/$BUILD/.ccache
|
|
export MAKEFLAGS=-j$CONCURRENCY_MAKE_LEVEL
|
|
export PKG_CONFIG=$ROOT/$TOOLCHAIN/bin/pkg-config
|
|
|
|
if [ -z "$PATH" -o "$PATH" = "${PATH#$ROOT/$TOOLCHAIN/bin:}" ]; then
|
|
export PATH="$ROOT/$TOOLCHAIN/bin:$PATH"
|
|
fi
|
|
|
|
setup_toolchain() {
|
|
if [ "$1" = "--optimize" ]; then
|
|
OPTIMIZE=yes
|
|
shift
|
|
fi
|
|
|
|
if [ "$1" = target ]; then
|
|
export CC=$TARGET_CC
|
|
export CXX=$TARGET_CXX
|
|
export LD=$TARGET_LD
|
|
export AS=$TARGET_AS
|
|
export AR=$TARGET_AR
|
|
export NM=$TARGET_NM
|
|
export RANLIB=$TARGET_RANLIB
|
|
export OBJCOPY=$TARGET_OBJCOPY
|
|
export STRIP=$TARGET_STRIP
|
|
export CPPFLAGS="$TARGET_CPPFLAGS"
|
|
export CFLAGS="$TARGET_CFLAGS"
|
|
export CXXFLAGS="$TARGET_CXXFLAGS"
|
|
export LDFLAGS="$TARGET_LDFLAGS"
|
|
elif [ "$1" = host ]; then
|
|
export AWK=$HOST_AWK
|
|
export CC=$HOST_CC
|
|
export CXX=$HOST_CXX
|
|
export LD=$HOST_LD
|
|
export AS=$HOST_AS
|
|
export AR=$HOST_AR
|
|
export NM=$HOST_NM
|
|
export RANLIB=$HOST_RANLIB
|
|
export OBJCOPY=$HOST_OBJCOPY
|
|
export STRIP=$HOST_STRIP
|
|
export CPPFLAGS="$HOST_CPPFLAGS"
|
|
export CFLAGS="$HOST_CFLAGS"
|
|
export CXXFLAGS="$HOST_CXXFLAGS"
|
|
export LDFLAGS="$HOST_LDFLAGS"
|
|
export PKG_CONFIG_PATH="$HOST_PKG_CONFIG_PATH"
|
|
fi
|
|
}
|
|
setup_toolchain target
|
|
|
|
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
|
|
INDENT_SIZE=4
|
|
|
|
OPENELEC_SRC=http://sources.geexbox.org/src/$OPENELEC_VERSION
|
|
|
|
# GEEXBOX_SRCS=http://www.geexbox.org/src/$GEEXBOX_VERSION
|
|
#[ "$GEEXBOX_VERSION" = devel ] && GEEXBOX_VERSION=$GEEXBOX_VERSION-`date +%Y%m%d` #-r`hg tip --template={rev}`
|
|
#[ "$OPENELEC_VERSION" = devel ] && OPENELEC_VERSION=$OPENELEC_VERSION-`date +%Y%m%d`-r`bzr version-info --custom --template={revno}`
|
|
#[ -n "$GEEXBOX_VERSION_EXTRA" ] && GEEXBOX_VERSION=$GEEXBOX_VERSION-$GEEXBOX_VERSION_EXTRA
|
|
|
|
VERSION_SUFFIX=$TARGET_ARCH
|
|
[ -n "$TARGET_PLATFORM" ] && VERSION_SUFFIX=$TARGET_PLATFORM
|
|
|
|
ISO=geexbox-$GEEXBOX_VERSION-$MENU_LANG.$VERSION_SUFFIX.iso
|
|
GENERATOR_NAME=geexbox-generator-$GEEXBOX_VERSION.$VERSION_SUFFIX
|
|
PXE_NAME=geexbox-pxe/GEEXBOX.$VERSION_SUFFIX
|
|
VMX_NAME=geexbox-vmx
|
|
|
|
|
|
kernel_path() {
|
|
ls -d $ROOT/$BUILD/linux*
|
|
}
|
|
|
|
require_eglibc() {
|
|
if [ "$TARGET_LIBC" != eglibc ]; then
|
|
echo "$1 requires eglibc, aborting."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
require_cxx() {
|
|
if [ "$TOOLCHAIN_CXX" != yes ]; then
|
|
echo "$1 requires C++ toolchain support, aborting."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
xorg_drv_configure_prepend() {
|
|
incdir=${SYSROOT_PREFIX}/usr/include/xorg
|
|
for f in dri.h sarea.h dristruct.h exa.h damage.h xf86Module.h; do
|
|
incfile="$incdir/$f"
|
|
if [ -f "$incfile" ]; then
|
|
p=`echo "$incfile" | sed 'y%*+%pp%;s%[^_[:alnum:]]%_%g'`
|
|
eval "export ac_cv_file_$p=yes"
|
|
fi
|
|
done
|
|
}
|
|
|
|
add_user() {
|
|
# Usage: add_user "username" "password" "userid" "groupid" "description" "home" "shell"
|
|
mkdir -p ${INSTALL}/etc
|
|
touch ${INSTALL}/etc/passwd
|
|
if [ -z "`grep "$1:" ${INSTALL}/etc/passwd`" ]; then
|
|
echo "$1:$2:$3:$4:$5:$6:$7" >> ${INSTALL}/etc/passwd
|
|
fi
|
|
}
|
|
|
|
add_group() {
|
|
# Usage: add_group "groupname" "groupid"
|
|
mkdir -p ${INSTALL}/etc
|
|
touch ${INSTALL}/etc/group
|
|
if [ -z "`grep "$1:" ${INSTALL}/etc/group`" ]; then
|
|
echo "$1:x:$2:" >> ${INSTALL}/etc/group
|
|
fi
|
|
}
|
|
|
|
INCLUDED_LANGS="en $MENU_LANG $INCLUDED_LANGS"
|
|
|
|
# read personal options if available
|
|
if [ -f $PROJECT_DIR/$PROJECT/options ]; then
|
|
. $PROJECT_DIR/$PROJECT/options
|
|
fi
|