Restore the original platform.sh

This commit is contained in:
Pierre Pronchery 2020-12-13 21:24:50 +01:00
parent e29dbdfbae
commit 12263ca7fb

View File

@ -30,10 +30,9 @@ DESTDIR=
LDSOCONF="/etc/ld.so.conf"
PREFIX="/usr/local"
PROGNAME="platform.sh"
SOEXT=
SOEXT=".so"
#executables
UNAME="uname"
[ -f "$CONFIGSH" ] && . "$CONFIGSH"
@ -99,25 +98,14 @@ _library_ldsoconf()
_platform_variable()
{
variable="$1"
context="$2"
case "$variable" in
ARCH)
if [ -n "$ARCH" ]; then
echo "$ARCH"
return 0
fi
ARCH=$($UNAME -m)
case "$ARCH" in
amd64|x86_64)
echo "amd64"
;;
i[3456]86)
echo "i386"
;;
*)
echo "unknown"
;;
esac
[ -n "$ARCH" ] || ARCH="$context"
[ -n "$ARCH" ] || ARCH=$($UNAME -m)
[ -n "$ARCH" ] || return 2
echo "$ARCH"
;;
BINDIR)
echo "$PREFIX/bin"
@ -125,6 +113,14 @@ _platform_variable()
DATADIR)
echo "$PREFIX/share"
;;
LIBK_*|LIBULOADER_*|NATIVE_*|UKERNEL_*|ULOADER_*)
[ -n "$PORT" ] || PORT=$(_platform_variable "PORT" "$context")
case "$PORT" in
amd64|i386)
"_platform_variable_$PORT" "$variable"
;;
esac
;;
LIBDIR)
echo "$PREFIX/lib"
;;
@ -135,25 +131,30 @@ _platform_variable()
echo "$PREFIX/share/man"
fi
;;
PORT)
[ -n "$PORT" ] || PORT="$context"
if [ ! -n "$PORT" ]; then
[ -n "$ARCH" ] || ARCH=$(_platform_variable "ARCH")
case "$ARCH" in
amd64|x86_64)
PORT="amd64"
;;
i[3456]86)
PORT="i386"
;;
*)
return 2
;;
esac
fi
echo "$PORT"
;;
PREFIX)
echo "$PREFIX"
;;
SBINDIR)
echo "$PREFIX/sbin"
;;
SOEXT)
case "$($UNAME -s)" in
"Darwin")
echo ".dylib"
;;
"MINGW"*)
echo ".dll"
;;
*)
echo ".so"
;;
esac
;;
SYSCONFDIR)
if [ "$PREFIX" = "/usr" ]; then
echo "/etc"
@ -164,21 +165,103 @@ _platform_variable()
esac
}
_platform_variable_amd64()
{
variable="$1"
extra=
platform=$($UNAME -s)
if [ "$platform" = "OpenBSD" ]; then
extra=" -fno-stack-protector"
else
extra=" -fstack-protector"
fi
case "$variable" in
LIBK_CFLAGS)
echo "-ffreestanding -fPIC -mno-red-zone$extra"
;;
LIBK_LDFLAGS|NATIVE_LDFLAGS)
echo "-nostdlib"
;;
LIBULOADER_CFLAGS)
echo "-m32 -ffreestanding -fPIC -mno-red-zone$extra"
;;
LIBULOADER_LDFLAGS)
echo "-m32 -nostdlib"
;;
NATIVE_CFLAGS)
echo "-ffreestanding -fPIE$extra"
;;
UKERNEL_CFLAGS)
echo "-ffreestanding -fPIE -mno-red-zone$extra"
;;
UKERNEL_LDFLAGS)
echo "-nostdlib -pie -static -T ${prepend}src/arch/amd64/uKernel.ld"
;;
ULOADER_CFLAGS)
echo "-m32 -ffreestanding$extra"
;;
ULOADER_LDFLAGS)
[ -n "$CC" ] || CC="cc"
echo "-m32 -nostdlib -static -T ${prepend}src/arch/i386/uKernel.ld $($CC -m32 -print-libgcc-file-name)"
;;
esac
}
_platform_variable_i386()
{
variable="$1"
extra=
platform=$($UNAME -s)
if [ "$platform" = "OpenBSD" ]; then
extra=" -fno-stack-protector"
else
extra=" -fstack-protector"
fi
case "$variable" in
LIBK_CFLAGS|LIBULOADER_CFLAGS)
echo "-ffreestanding -fPIC$extra"
;;
LIBK_LDFLAGS|LIBULOADER_LDFLAGS|NATIVE_LDFLAGS)
echo "-nostdlib"
;;
NATIVE_CFLAGS|UKERNEL_CFLAGS)
echo "-ffreestanding -fPIE$extra"
;;
UKERNEL_LDFLAGS)
echo "-nostdlib -pie -static -T ${prepend}src/arch/i386/uKernel.ld"
;;
ULOADER_CFLAGS)
echo "-ffreestanding$extra"
;;
ULOADER_LDFLAGS)
[ -n "$CC" ] || CC="cc"
echo "-nostdlib -static -T ${prepend}src/arch/i386/uKernel.ld $($CC -m32 -print-libgcc-file-name)"
;;
esac
}
#usage
_usage()
{
echo "Usage: $PROGNAME -l library" 1>&2
echo " $PROGNAME -V variable" 1>&2
echo " $PROGNAME -V variable [-C context]" 1>&2
return 1
}
#main
prepend="${0%tools/platform.sh}"
context=
type=
variable=
while getopts "l:O:V:" name; do
while getopts "C:l:O:V:" name; do
case "$name" in
C)
context="$OPTARG"
;;
O)
export "${OPTARG%%=*}"="${OPTARG#*=}"
;;
@ -202,14 +285,12 @@ if [ $# -ne 0 ]; then
exit $?
fi
[ -n "$SOEXT" ] || SOEXT=$(_platform_variable SOEXT)
case "$type" in
library)
"_platform_$type" "$library"
;;
variable)
"_platform_$type" "$variable"
"_platform_$type" "$variable" "$context"
;;
*)
_usage