0
0
Fork 0
haikuports/dev-lang/tcc/tcc-0.9.26.recipe

139 lines
4.7 KiB
Bash

SUMMARY="A small and fast C compiler"
DESCRIPTION="* SMALL! You can compile and execute C code everywhere, for \
example on rescue disks (about 100KB for x86 TCC executable, including C \
preprocessor, C compiler, assembler and linker).
* FAST! tcc generates x86 code. No byte code overhead. Compile, assemble and \
link several times faster than GCC.
* UNLIMITED! Any C dynamic library can be used directly. TCC is heading \
torward full ISOC99 compliance. TCC can of course compile itself.
* SAFE! tcc includes an optional memory and bound checker. Bound checked code \
can be mixed freely with standard code.
* Compile and execute C source directly. No linking or assembly necessary. \
Full C preprocessor and GNU-like assembler included.
* C script supported : just add '#!/usr/local/bin/tcc -run' at the first line \
of your C source, and execute it directly from the command line.
* With libtcc, you can use TCC as a backend for dynamic code generation."
HOMEPAGE="https://bellard.org/tcc/"
COPYRIGHT="2001-2014 Fabrice Bellard"
LICENSE="GNU LGPL v2"
REVISION="3"
SOURCE_URI="http://download.savannah.gnu.org/releases/tinycc/tcc-0.9.26.tar.bz2"
CHECKSUM_SHA256="521e701ae436c302545c3f973a9c9b7e2694769c71d9be10f70a2460705b6d71"
PATCHES="tcc-$portVersion.patchset"
ARCHITECTURES="?all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
tcc$secondaryArchSuffix = $portVersion
cmd:arm_eabi_tcc$secondaryArchSuffix
cmd:arm_fpa_ld_tcc$secondaryArchSuffix
cmd:arm_fpa_tcc$secondaryArchSuffix
cmd:arm_vfp_tcc$secondaryArchSuffix
cmd:c67_tcc$secondaryArchSuffix
cmd:i386_win32_tcc$secondaryArchSuffix
cmd:tcc$secondaryArchSuffix
cmd:x86_64_tcc$secondaryArchSuffix
cmd:x86_64_win32_tcc$secondaryArchSuffix
"
REQUIRES="
haiku$secondaryArchSuffix
"
PROVIDES_devel="
tcc${secondaryArchSuffix}_devel = $portVersion
devel:libtcc$secondaryArchSuffix
"
REQUIRES_devel="
"
BUILD_PREREQUIRES="
haiku${secondaryArchSuffix}_devel
cmd:gcc$secondaryArchSuffix
cmd:make
"
BUILD()
{
local hybrid
# Borrowed from gcc
local sysincdir=(
"/boot/system/develop/headers/os"
"/boot/system/develop/headers/os/app"
"/boot/system/develop/headers/os/device"
"/boot/system/develop/headers/os/drivers"
"/boot/system/develop/headers/os/game"
"/boot/system/develop/headers/os/interface"
"/boot/system/develop/headers/os/kernel"
"/boot/system/develop/headers/os/locale"
"/boot/system/develop/headers/os/mail"
"/boot/system/develop/headers/os/media"
"/boot/system/develop/headers/os/midi"
"/boot/system/develop/headers/os/midi2"
"/boot/system/develop/headers/os/net"
"/boot/system/develop/headers/os/opengl"
"/boot/system/develop/headers/os/storage"
"/boot/system/develop/headers/os/support"
"/boot/system/develop/headers/os/translation"
"/boot/system/develop/headers/os/add-ons/graphics"
"/boot/system/develop/headers/os/add-ons/input_server"
"/boot/system/develop/headers/os/add-ons/mail_daemon"
"/boot/system/develop/headers/os/add-ons/registrar"
"/boot/system/develop/headers/os/add-ons/screen_saver"
"/boot/system/develop/headers/os/add-ons/tracker"
"/boot/system/develop/headers/os/be_apps/Deskbar"
"/boot/system/develop/headers/os/be_apps/NetPositive"
"/boot/system/develop/headers/os/be_apps/Tracker"
"/boot/system/develop/headers/3rdparty"
"/boot/system/develop/headers/bsd"
"/boot/system/develop/headers/glibc"
"/boot/system/develop/headers/gnu"
"/boot/system/develop/headers/posix"
)
if [ -n "$secondaryArchSuffix" ]; then
hybrid="${secondaryArchSuffix#_}"
sysincdir=("/boot/system/non-packaged/develop/headers/$hybrid"
${sysincdir[@]}
"/boot/system/develop/headers/$hybrid"
"/boot/system/develop/headers/$hybrid/os"
"/boot/system/develop/headers/$hybrid/os/opengl")
else
sysincdir=("/boot/system/non-packaged/develop/headers"
${sysincdir[@]})
fi
sysincdir+=("/boot/system/develop/headers"
# TCC owns include paths, refer to tcc.h
"{B}/include")
local crtpre=("/boot/system/non-packaged/develop/lib${hybrid:+/$hybrid}"
"/boot/system/develop/lib${hybrid:+/$hybrid}")
local libdir=(${crtpre[@]}
"/boot/system/non-packaged/lib${hybrid:+/$hybrid}"
"/boot/system/lib${hybrid:+/$hybrid}")
runConfigure ./configure --enable-cross \
--sysincludepaths=$(IFS=:; echo "${sysincdir[*]}") \
--libpaths=$(IFS=:; echo "${libdir[*]}") \
--crtprefix=$(IFS=:; echo "${crtpre[*]}") \
--elfinterp=/system/runtime_loader
make $jobArgs
}
INSTALL()
{
make install
prepareInstalledDevelLib libtcc
packageEntries devel $developDir
}
TEST()
{
if [ "$targetArchitecture" == "x86_gcc2" && -z "$secondaryArchSuffix" ]; then
echo "Sorry, test doesn't support gcc2"
else
make test
fi
}