diff --git a/sys-devel/gcc/gcc-2.95.3_130425.recipe b/sys-devel/gcc/gcc-2.95.3_130425.recipe new file mode 100644 index 000000000..78d7fdb42 --- /dev/null +++ b/sys-devel/gcc/gcc-2.95.3_130425.recipe @@ -0,0 +1,149 @@ +SUMMARY="C/C++ compiler" +DESCRIPTION="Standard compiler for x86_gcc2 platform, ABI-compatible with BeOS R5." +HOMEPAGE="http://gcc.gnu.org" +LICENSE=" + GNU GPL v2 + GNU LGPL v2 + " +COPYRIGHT="1988-2000 Free Software Foundation, Inc." +SRC_URI="git+git://github.com/haiku/BuildtoolsPM.git#a57415355d72c2f0aa2afd1c374c9f7f9fc7f045" +REVISION="1" +ARCHITECTURES="x86_gcc2 ?x86" + +PROVIDES=" + gcc = $portVersion compat >= 2.95.3 + cmd:c++ = $portVersion compat >= 2.95.3 + cmd:cpp = $portVersion compat >= 2.95.3 + cmd:g++ = $portVersion compat >= 2.95.3 + cmd:gcc = $portVersion compat >= 2.95.3 + cmd:gcov = 1.5 compat >= 1.5 + cmd:protoize = $portVersion compat >= 2.95.3 + cmd:unprotoize = $portVersion compat >= 2.95.3 + " + +REQUIRES=" + haiku >= $haikuVersion + " +BUILD_REQUIRES=" + binutils + " +BUILD_PREREQUIRES=" + haiku_devel >= $haikuVersion + cmd:autoconf + gcc + cmd:flex + cmd:make + cmd:sed + cmd:tar + cmd:makeinfo + " + +SOURCE_DIR="$portVersionedName" +BUILD_PACKAGE_ACTIVATION_PHASE=INSTALL + +gccDir=$(pwd)/legacy/gcc +gccDate=110711 +relativeGccInstallDir="develop/tools/gcc-2.95.3-${gccDate}" +gccInstallDir="$prefix/$relativeGccInstallDir" +objectsDir=$(pwd)/../${portVersionedName}-obj +gccObjectsDir=$objectsDir/gcc + +BUILD() +{ + rm -rf $objectsDir + + # Touch some files generated by bison, so that bison won't run to update + # them. Fixes issues with newer bison versions. + # And while at it, touch gperf target, too (as gperf may not be installed). + (cd $gccDir/gcc; touch c-parse.c c-parse.h cexp.c cp/parse.c \ + cp/parse.h c-gperf.h) + + # build gcc + mkdir -p $gccObjectsDir + cd $gccObjectsDir + CFLAGS="-O2" CXXFLAGS="-O2" "$gccDir/configure" \ + --prefix=$gccInstallDir \ + --disable-nls --enable-shared=yes --enable-languages=c,c++ + make bootstrap || true + # The above will fail when compiling builtinbuf.cc, but we can ignore + # that since it's trying to build libstdc++.so, which haiku provides + # anyway. +} + +INSTALL() +{ + cd $gccObjectsDir + make install + + base=$gccInstallDir + + ### HTML documentation #################################### + + html_base=$prefix/documentation/packages/$portVersionedName + if [ ! -d "$html_base" ]; then + echo "Building HTML documentation..." + mkdir -p $html_base + cd $html_base + + makeinfo --html "$gccDir/gcc/cpp.texi" + makeinfo --html "$gccDir/gcc/gcc.texi" + makeinfo --force --html "$gccDir/libio/iostream.texi" \ + && true + # some errors + + ln -sf cpp/index.html $html_base/cpp.html + ln -sf gcc/index.html $html_base/gcc.html + ln -sf iostream/index.html $html_base/iostream.html + fi + + ### Symlinks ############################################## + + echo "Creating required symlinks" + + # convert to absolute links to relative ones + cd $base/bin + ln -sfn g++ c++ + ln -sfn gcc cc + ln -sfn gcc i586-pc-haiku-gcc + + # make all tools available via default paths if this is the system + # compiler + if [ $architecture = 'x86_gcc2' ]; then + echo "Symlinking binaries into default path" + mkdir -p $prefix/bin + cd $prefix/bin + ln -sfn ../$relativeGccInstallDir/bin/* . + fi + + ### Strip ################################################# + + echo "Strip debug info" + + cd $base + strip --strip-debug bin/* + strip --strip-debug i586-pc-haiku/bin/* + strip --strip-debug lib/gcc-lib/i586-pc-haiku/2.95.3-${gccDate}/* \ + &>/dev/null || true + + ### Cleanup ############################################### + + echo "Cleanup" + + if [ -d $base/man -o -d $base/info -o -d $base/share ]; then + rm -rf $base/man + rm -rf $base/info + rm -rf $base/share + fi + + rm -f $base/lib/gcc-lib/i586-pc-haiku/2.95.3-haiku-$gccDate/include/math.h + + ### C++ includes ########################################## + + echo "Install C++ includes & library" + + rm -rf $base/include/g++ + ln -snf /boot/system/develop/headers/c++/2.95.3 $base/include/g++ + + ln -snf /boot/system/lib/libstdc++.r4.so $base/lib/ + ln -snf /boot/system/lib/libstdc++.so $base/lib/ +}