ilmbase: Workaround for cross compiling
This commit is contained in:
parent
61d7333cb4
commit
3635002435
3 changed files with 124 additions and 4 deletions
39
srcpkgs/ilmbase/files/eLut.sh
Normal file
39
srcpkgs/ilmbase/files/eLut.sh
Normal file
|
@ -0,0 +1,39 @@
|
|||
#!/bin/sh
|
||||
|
||||
eLut() {
|
||||
local i=$1
|
||||
e=$(((i & 0xff) - (127 - 15)))
|
||||
j=$((i>>8))
|
||||
if [ $e -le 0 -o $e -ge 30 ]; then
|
||||
# Special case
|
||||
echo "0"
|
||||
elif [ $j -eq 0 ]; then
|
||||
# Common case - normalized half, no exponent overflow possible
|
||||
echo $((e << 10))
|
||||
else
|
||||
echo $(((e << 10) | 0x8000))
|
||||
fi
|
||||
}
|
||||
|
||||
echo "//"
|
||||
echo "// This is an automatically generated file."
|
||||
echo "// Do not edit."
|
||||
echo "//"
|
||||
echo ""
|
||||
echo "{"
|
||||
echo -n " "
|
||||
|
||||
i=0
|
||||
j=0
|
||||
while [ $i -lt 512 ]; do
|
||||
out="$(eLut $i)"
|
||||
printf "%7s," $out
|
||||
j=$((j + 1))
|
||||
if [ $j -eq 8 ]; then
|
||||
j=0
|
||||
printf "\n"
|
||||
[ $i -lt 511 ] && printf " "
|
||||
fi
|
||||
i=$((i + 1))
|
||||
done
|
||||
echo "};"
|
71
srcpkgs/ilmbase/files/toFloat.sh
Normal file
71
srcpkgs/ilmbase/files/toFloat.sh
Normal file
|
@ -0,0 +1,71 @@
|
|||
#!/bin/sh
|
||||
|
||||
halfToFloat() {
|
||||
local s=$1 e=$2 m=$3
|
||||
if [ $e -eq 0 ]; then
|
||||
if [ $m -eq 0 ]; then
|
||||
# Plus or minus zero
|
||||
echo $((s << 31))
|
||||
return
|
||||
else
|
||||
# Denormalized number -- renormalize it
|
||||
while [ $((m & 0x400)) -eq 0 ]; do
|
||||
m=$((m << 1))
|
||||
e=$((e - 1))
|
||||
done
|
||||
e=$((e + 1))
|
||||
m=$((m & 0x3ff))
|
||||
fi
|
||||
elif [ $e -eq 31 ]; then
|
||||
if [ "$m" -eq 0 ]; then
|
||||
# Positive or negative infinity
|
||||
echo $(((s << 31) | 0x7f800000))
|
||||
return
|
||||
else
|
||||
# Nan - preserve sign and significand bits
|
||||
echo $(((s << 31) | 0x7f800000 | (m << 13)))
|
||||
return
|
||||
fi
|
||||
fi
|
||||
# Normalized number
|
||||
e=$((e + (127 - 15)))
|
||||
m=$((m << 13))
|
||||
# Assemble s, e and m
|
||||
echo $(((s << 31) | (e << 23) | m))
|
||||
}
|
||||
|
||||
|
||||
echo "//"
|
||||
echo "// This is an automatically generated file."
|
||||
echo "// Do not edit."
|
||||
echo "//"
|
||||
echo ""
|
||||
echo "{"
|
||||
echo -n " "
|
||||
|
||||
s=0
|
||||
m=0
|
||||
e=0
|
||||
j=0
|
||||
k=0
|
||||
while [ $s -lt 2 ]; do
|
||||
while [ $e -lt 32 ]; do
|
||||
while [ $m -lt 1024 ]; do
|
||||
out="$(halfToFloat $s $e $m)"
|
||||
printf "{0x%08x}, " $out
|
||||
m=$((m + 1))
|
||||
j=$((j + 1))
|
||||
if [ $j -eq 4 ]; then
|
||||
printf "\n"
|
||||
k=$((k + 1))
|
||||
[ $k -lt 16384 ] && printf " "
|
||||
j=0
|
||||
fi
|
||||
done
|
||||
m=0
|
||||
e=$((e + 1))
|
||||
done
|
||||
e=0
|
||||
s=$((s + 1))
|
||||
done
|
||||
echo "};"
|
|
@ -1,18 +1,28 @@
|
|||
# Template file for 'ilmbase'
|
||||
pkgname=ilmbase
|
||||
version=2.2.0
|
||||
revision=2
|
||||
revision=3
|
||||
build_style=gnu-configure
|
||||
short_desc="Base libraries from ILM for OpenEXR"
|
||||
maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
||||
license="BSD"
|
||||
homepage="http://www.openexr.com"
|
||||
distfiles="http://download.savannah.nongnu.org/releases/openexr/$pkgname-$version.tar.gz"
|
||||
distfiles="${NONGNU_SITE}/openexr/$pkgname-$version.tar.gz"
|
||||
checksum=ecf815b60695555c1fbc73679e84c7c9902f4e8faa6e8000d2f905b8b86cedc7
|
||||
nocross=yes
|
||||
|
||||
LDFLAGS="-lpthread"
|
||||
LDFLAGS="-L${XBPS_CROSS_BASE}/usr/lib -lpthread"
|
||||
|
||||
pre_build() {
|
||||
if [ -n "$CROSS_BUILD" ]; then
|
||||
# Copy shell script header generators - slow but working
|
||||
cp ${FILESDIR}/*.sh ${wrksrc}/Half
|
||||
sed -i Half/Makefile \
|
||||
-e "/eLut.h: eLut/s;$;.sh;" \
|
||||
-e "s;\./eLut > eLut.h;sh eLut.sh > eLut.h;" \
|
||||
-e "/toFloat.h: toFloat/s;$;.sh;" \
|
||||
-e "s;\./toFloat > toFloat.h;sh toFloat.sh > toFloat.h;"
|
||||
fi
|
||||
}
|
||||
post_install() {
|
||||
vlicense COPYING
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue