105 lines
3.0 KiB
Bash
Executable File
105 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# PROJECT: XTchain
|
|
# LICENSE: See the COPYING.md in the top level directory
|
|
# FILE: scripts/xtclib
|
|
# DESCRIPTION: XTchain library
|
|
# DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
|
|
|
|
|
# Sets the target architecture
|
|
charch()
|
|
{
|
|
if [ "x${1}" == "x" ]; then
|
|
echo "Syntax: charch [architecture]"
|
|
return
|
|
fi
|
|
case ${1} in
|
|
"aarch64"|"arm64")
|
|
export TARGET="aarch64"
|
|
;;
|
|
"arm"|"armv7")
|
|
export TARGET="armv7"
|
|
;;
|
|
"i386"|"i486"|"i586"|"i686"|"x86")
|
|
export TARGET="i686"
|
|
;;
|
|
"amd64"|"x64"|"x86_64")
|
|
export TARGET="amd64"
|
|
;;
|
|
*)
|
|
export TARGET="UNKNOWN"
|
|
esac
|
|
echo "Target Architecture: ${TARGET}"
|
|
}
|
|
export -f charch
|
|
|
|
# Sets the build type
|
|
chbuild()
|
|
{
|
|
if [ "x${1}" == "x" ]; then
|
|
echo "Syntax: chbuild [DEBUG|RELEASE]"
|
|
return
|
|
fi
|
|
case ${1} in
|
|
[Rr][Ee][Ll][Ee][Aa][Ss][Ee])
|
|
export BUILD_TYPE="RELEASE"
|
|
;;
|
|
*)
|
|
export BUILD_TYPE="DEBUG"
|
|
esac
|
|
echo "Target build type: ${BUILD_TYPE}"
|
|
}
|
|
export -f chbuild
|
|
|
|
# Prints help
|
|
help()
|
|
{
|
|
version
|
|
echo "XTChain defines an internal list of commands:"
|
|
echo " * charch [arch] - sets the target CPU architecture [aarch64/armv7/i686/amd64]"
|
|
echo " * chbuild [type] - sets build type [debug/release]"
|
|
echo " * help - prints this message"
|
|
echo " * version - prints XTChain and its components version"
|
|
echo " * xbuild - builds an application with a Ninja build system"
|
|
}
|
|
export -f help
|
|
|
|
# Displays version banner
|
|
version()
|
|
{
|
|
echo "###############################################################################"
|
|
echo "# XT Toolchain v${XTCVER} for Linux #"
|
|
echo "# by Rafal Kupiec <belliash@codingworkshop.eu.org> #"
|
|
echo "###############################################################################"
|
|
echo
|
|
echo
|
|
echo "LLVM Compiler Version: $(${XTCDIR}/bin/clang --version | grep 'clang version' | cut -d' ' -f3)"
|
|
echo "LLVM Windres Utility Version: $(${XTCDIR}/bin/i686-w64-mingw32-windres -V | cut -d' ' -f6)"
|
|
echo "Mingw IDL Compiler Version: $(${XTCDIR}/bin/i686-w64-mingw32-widl -V | grep 'version' | cut -d' ' -f5)"
|
|
echo "Wine Message Compiler Version: $(${XTCDIR}/bin/wmc -V | grep 'version' | cut -d' ' -f5)"
|
|
echo "Wine Resource Compiler Version: $(${XTCDIR}/bin/wrc --version | grep 'version' | cut -d' ' -f5)"
|
|
echo
|
|
charch ${TARGET:-amd64}
|
|
chbuild ${BUILD_TYPE:-DEBUG}
|
|
echo
|
|
echo
|
|
}
|
|
export -f version
|
|
|
|
# Builds application (wrapper to Ninja)
|
|
xbuild()
|
|
{
|
|
if [ ! -f build.arch ]; then
|
|
ninja "$@"
|
|
else
|
|
ARCH=$(cat build.arch)
|
|
if [ x"${ARCH}" != x"${TARGET}" ]; then
|
|
echo "Build is configured for '${ARCH}' while current target set to '${TARGET}'!"
|
|
echo "Cannot continue until conflict is resolved ..."
|
|
return 1
|
|
fi
|
|
ninja "$@"
|
|
fi
|
|
}
|
|
export -f xbuild
|