From 06e4e0810387ea9c5c2df0d9107e6a5a63386fc2 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Mon, 22 Apr 2013 00:18:31 +0200 Subject: [PATCH] Finish work on haiku/master versions of prequired packages --- .../binutils/binutils-2.17_130421.recipe | 169 ++++++++++++++++++ sys-devel/bison/bison-2.4.3.recipe | 46 +++-- sys-devel/gcc/gcc-2.95.3_130421.recipe | 149 +++++++++++++++ 3 files changed, 347 insertions(+), 17 deletions(-) create mode 100644 sys-devel/binutils/binutils-2.17_130421.recipe create mode 100644 sys-devel/gcc/gcc-2.95.3_130421.recipe diff --git a/sys-devel/binutils/binutils-2.17_130421.recipe b/sys-devel/binutils/binutils-2.17_130421.recipe new file mode 100644 index 000000000..d02db30e1 --- /dev/null +++ b/sys-devel/binutils/binutils-2.17_130421.recipe @@ -0,0 +1,169 @@ +SUMMARY="The GNU assembler, linker and binary utilities" +HOMEPAGE="http://www.gnu.org/software/binutils" +SRC_URI="git+git://github.com/haiku/BuildtoolsPM.git#278de7bc9243876c2e08f8d6a243d510c5000462" +REVISION="1" +ARCHITECTURES="x86_gcc2 ?x86" +LICENSE=" + GNU GPL v2 + GNU LGPL v2 + " +COPYRIGHT="1988-2006 Free Software Foundation, Inc." + + +PROVIDES=" + binutils = $portVersion compat >= 2.17 + cmd:addr2line = $portVersion compat >= 2.17 + cmd:ar = $portVersion compat >= 2.17 + cmd:as = $portVersion compat >= 2.17 + cmd:c++filt = $portVersion compat >= 2.17 + cmd:gprof = $portVersion compat >= 2.17 + cmd:ld = $portVersion compat >= 2.17 + cmd:nm = $portVersion compat >= 2.17 + cmd:objcopy = $portVersion compat >= 2.17 + cmd:objdump = $portVersion compat >= 2.17 + cmd:ranlib = $portVersion compat >= 2.17 + cmd:readelf = $portVersion compat >= 2.17 + cmd:size = $portVersion compat >= 2.17 + cmd:strings = $portVersion compat >= 2.17 + cmd:strip = $portVersion compat >= 2.17 + " + +REQUIRES=" + haiku >= $haikuVersion + " +BUILD_REQUIRES=" + " +BUILD_PREREQUIRES=" + haiku_devel >= $haikuVersion + cmd:autoconf + binutils + gcc + cmd:flex + cmd:make + cmd:sed + cmd:tar + texinfo + " + +SOURCE_DIR="$portVersionedName" +BUILD_PACKAGE_ACTIVATION_PHASE=INSTALL + +binutilsDir=$(pwd)/legacy/binutils +relativeArchInstallDir="develop/tools/${portVersionedName}" +archInstallDir="$prefix/$relativeArchInstallDir" +objectsDir=$(pwd)/../${portVersionedName}-obj +binutilsObjectsDir=$objectsDir/binutils + +BUILD() +{ + rm -rf $objectsDir + + # Touch all *.info files, as newer texinfos don't like their format + (cd $binutilsDir; find . -name \*.info | xargs touch) + + # build binutils + mkdir -p $binutilsObjectsDir + cd $binutilsObjectsDir + CFLAGS="-O2" CXXFLAGS="-O2" "$binutilsDir/configure" \ + --prefix=$prefix --exec-prefix=$archInstallDir \ + --bindir=$prefix/bin --libdir=$prefix/lib \ + --includedir=$prefix/develop/headers/binutils \ + --mandir=$prefix/documentation/man \ + --with-htmldir=documentation/html/binutils \ + --disable-nls --enable-shared=yes + make +} + +INSTALL() +{ + cd $binutilsObjectsDir + archName=$(grep '^target_alias' Makefile | cut -d= -f2) + + make install + make install-html + + ### HTML documentation #################################### + + echo "Organizing HTML documentation..." + html_base=$prefix/documentation/html/binutils + cd $html_base + + mv as.html as + ln -sf as/index.html as.html + mv bfd.html bfd + ln -sf bfd/index.html bfd.html + mv binutils.html binutils + ln -sf binutils/index.html binutils.html + mv gprof.html gprof + ln -sf gprof/index.html gprof.html + mv ld.html ld + ln -sf ld/index.html ld.html + rm standards.html + + ### Strip ################################################# + + echo "Strip debug info" + + cd $prefix + find bin -type f | xargs -r strip --strip-debug + strip --strip-debug lib/*.a + strip --strip-debug $archInstallDir/$archName/bin/* + + ### Symlinks ############################################## + + echo "Creating required symlinks" + + # remove duplicate architecture-dependent binaries from $prefix/bin + cd $prefix/bin + rm ar as ld nm objdump ranlib strip + + # make all tools available via default paths if these are + # the system binutils + if [ $architecture = 'x86_gcc2' ]; then + echo "Symlinking binaries into default path" + mkdir -p $prefix/bin + ln -sfn ../$relativeArchInstallDir/$archName/bin/* . + fi + + ### Cleanup ################################################# + + echo "Cleanup" + + cd $prefix + rm -rf info +} + +DESCRIPTION=" + The GNU Binutils are a collection of binary tools. The main ones are: + + ld - the GNU linker. + as - the GNU assembler. + + But they also include: + + addr2line - Converts addresses into filenames and line numbers. + ar - A utility for creating, modifying and extracting from archives. + c++filt - Filter to demangle encoded C++ symbols. + dlltool - Creates files for building and using DLLs. + gold - A new, faster, ELF only linker, still in beta test. + gprof - Displays profiling information. + nlmconv - Converts object code into an NLM. + nm - Lists symbols from object files. + objcopy - Copys and translates object files. + objdump - Displays information from object files. + ranlib - Generates an index to the contents of an archive. + readelf - Displays information from any ELF format object file. + size - Lists the section sizes of an object or archive file. + strings - Lists printable strings from files. + strip - Discards symbols. + windmc - A Windows compatible message compiler. + windres - A compiler for Windows resource files. + + Most of these programs use BFD, the Binary File Descriptor library, to do low-level + manipulation. Many of them also use the opcodes library to assemble and disassemble machine + instructions. + + The binutils have been ported to most major Unix variants as well as Wintel systems, and their + main reason for existence is to give the GNU system (and GNU/Linux) the facility to compile + and link programs. + " diff --git a/sys-devel/bison/bison-2.4.3.recipe b/sys-devel/bison/bison-2.4.3.recipe index f3e420f0a..8a98b4c02 100644 --- a/sys-devel/bison/bison-2.4.3.recipe +++ b/sys-devel/bison/bison-2.4.3.recipe @@ -1,29 +1,43 @@ SUMMARY="A yacc-compatible parser generator" -DESCRIPTION="Bison is a general-purpose parser generator that converts an annotated - context-free grammar into an LALR(1) or GLR parser for that grammar. Once you - are proficient with Bison, you can use it to develop a wide range of language - parsers, from those used in simple desk calculators to complex programming - languages. +DESCRIPTION=" + Bison is a general-purpose parser generator that converts an annotated + context-free grammar into an LALR(1) or GLR parser for that grammar. Once + you are proficient with Bison, you can use it to develop a wide range of + language parsers, from those used in simple desk calculators to complex + programming languages. - Bison is upward compatible with Yacc: all properly-written Yacc grammars ought - to work with Bison with no change. Anyone familiar with Yacc should be able to - use Bison with little trouble. You need to be fluent in C or C++ programming in - order to use Bison." + Bison is upward compatible with Yacc: all properly-written Yacc grammars + ought to work with Bison with no change. Anyone familiar with Yacc should + be able to use Bison with little trouble. You need to be fluent in C or + C++ programming in order to use Bison. + " HOMEPAGE="http://www.gnu.org/software/bison/bison.html" +COPYRIGHT="1992-2010 Free Software Foundation, Inc." +LICENSE="GNU GPL v3" SRC_URI="http://ftp.gnu.org/gnu/bison/bison-2.4.3.tar.gz" CHECKSUM_MD5="ea45c778b36bdc7a720096819e292a73" -REVISION="3" +REVISION="4" ARCHITECTURES="x86_gcc2 ?x86" -PROVIDES="bison = $portVersion compat >= 2.4 +PROVIDES=" + bison = $portVersion compat >= 2.4 cmd:bison = $portVersion compat >= 2.4 cmd:yacc - lib:liby.a = $portVersion compat >= 2.4" -REQUIRES="haiku >= $haikuVersion" -BUILD_PREREQUIRES="haiku_devel >= $haikuVersion + lib:liby.a = $portVersion compat >= 2.4 + " +REQUIRES=" + haiku >= $haikuVersion + " +BUILD_REQUIRES=" cmd:gcc cmd:ld - cmd:make" + cmd:m4 + cmd:make + cmd:sed + " +BUILD_PREREQUIRES=" + haiku_devel >= $haikuVersion + " SOURCE_DIR="$portVersionedName" @@ -46,5 +60,3 @@ TEST() make check } -LICENSE="GNU GPL v3" -COPYRIGHT="1992-2010 Free Software Foundation, Inc." diff --git a/sys-devel/gcc/gcc-2.95.3_130421.recipe b/sys-devel/gcc/gcc-2.95.3_130421.recipe new file mode 100644 index 000000000..21a0fbfd1 --- /dev/null +++ b/sys-devel/gcc/gcc-2.95.3_130421.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#278de7bc9243876c2e08f8d6a243d510c5000462" +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/ +}