diff --git a/gcc31/gcc31.spec b/gcc31/gcc31.spec new file mode 100644 index 0000000000..9318d41984 --- /dev/null +++ b/gcc31/gcc31.spec @@ -0,0 +1,181 @@ +## +## gcc31.spec -- OpenPKG RPM Specification +## Copyright (c) 2000-2002 Cable & Wireless Deutschland GmbH +## Copyright (c) 2000-2002 The OpenPKG Project +## Copyright (c) 2000-2002 Ralf S. Engelschall +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# the version informations +%define V_major 3.1 +%define V_snap_Y 2002 +%define V_snap_M 03 +%define V_snap_D 09 + +# derived version shortcuts +%define V_here %{V_major}s%{V_snap_Y}%{V_snap_M}%{V_snap_D} +%define V_dir %{V_snap_Y}-%{V_snap_M}-%{V_snap_D} +%define V_file %{V_snap_Y}%{V_snap_M}%{V_snap_D} + +# package information +Name: gcc31 +Summary: Forthcoming GNU C/C++ Compiler (3.1) +URL: http://gcc.gnu.org/ +Vendor: Free Software Foundation +Packager: The OpenPKG Project +Distribution: OpenPKG [EXP] +Group: Language +License: GPL +Version: %{V_here} +Release: 20020311 + +# list of sources +Source0: ftp://gcc.gnu.org/pub/gcc/snapshots/%{V_dir}/gcc-%{V_file}.tar.bz2 + +# build information +Prefix: %{l_prefix} +BuildRoot: %{l_buildroot} +BuildPreReq: OpenPKG, openpkg >= 20020206, make +PreReq: OpenPKG, openpkg >= 20020206 +AutoReq: no +AutoReqProv: no + +%description + The GNU Compiler Collection (GCC) provides a standard conforming + and highly portable ISO C and ISO C++ compiler. This is a SNAPSHOT + version of the forthcoming GCC 3.1. Do not use it in a production + environment! + +%prep + %setup -q -n gcc-%{V_file} + +%build + # configure the package + mkdir obj + cd obj + options="" + case "%{l_target}" in + *-linux* | *-freebsd* ) options="--with-gnu-as --with-gnu-ld" ;; + esac + CC="%{l_cc}" \ + CFLAGS="%{l_cflags}" \ + ../configure \ + --prefix=%{l_prefix} \ + --exec-prefix=%{l_prefix} \ + --with-gxx-include-dir=%{l_prefix}/include/g++31 \ + --with-local-prefix=%{l_prefix}/lib/gcc31-lib \ + --enable-languages="c,c++" \ + --enable-threads \ + --disable-maintainer-mode \ + --disable-shared \ + --disable-nls \ + $options + + # build the package + %{l_make} %{l_mflags} \ + MAKE="%{l_make} %{l_mflags}" \ + CFLAGS='-O' \ + LIBCFLAGS='-g -O2' \ + LIBCXXFLAGS='-g -O2 -fno-implicit-templates' \ + bootstrap-lean + +%install + rm -rf $RPM_BUILD_ROOT + triple=`./config.guess` + triple=`./config.sub $triple | sed -e 's;-unknown-;--;'` + cd obj + + # redirect to temporary build root + %{l_shtool} subst -v -s \ + -e "s;^\\(prefix[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix};" \ + -e "s;^\\(exec_prefix[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix};" \ + -e "s;^\\(gcc_gxx_include_dir[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix}/include/g++31;" \ + -e "s;^\\(gxx_include_dir[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix}/include/g++31;" \ + -e "s;^\\(glibcppinstalldir[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix}/include/g++31;" \ + -e "s;^\\(local_prefix[ ]*=\\).*;\\1 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc31-lib;" \ + `find . -name Makefile -type f -print` + + # make sure the install procedure doesn't compile anything + # (or else we would have wrong paths hard-coded in the programs) + %{l_shtool} subst -v -s \ + -e 's;^install-cpp:.*;install-cpp:;' \ + -e 's;^install-common:.*;install-common: installdirs lang.install-common;' \ + -e 's;^install-driver:.*;install-driver:;' \ + -e 's;^install-libgcc:.*;install-libgcc: installdirs;' \ + -e 's;^install-build:.*;install-build:;' \ + -e 's;^install-collect2:.*;install-collect2: installdirs;' \ + -e 's;^install-assert-h:.*;install-assert-h: installdirs;' \ + -e 's;^install: stmp-dirs ./libgcc.a;install: stmp-dirs;' \ + -e 's;^\(install-.*:.*\) all *\(.*\)$;\1\2;' \ + gcc/Makefile gcc/libgcc.mk gcc/*/Makefile + + # make sure the Makefiles are not re-generated + for file in `find . -name config.status -print`; do + ( echo "#!/bin/sh" + echo ":" + ) >$file + done + + # run the standard installation procedure + %{l_make} %{l_mflags} install + + # strip the installation + mv $RPM_BUILD_ROOT%{l_prefix}/$triple/include/* \ + $RPM_BUILD_ROOT%{l_prefix}/lib/gcc31-lib/$triple/%{V_major}/include/ >/dev/null 2>&1 || true + rm -rf $RPM_BUILD_ROOT%{l_prefix}/$triple + rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.la + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcc + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-c++ + rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-g++ + strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true + for prog in cc1 cc1plus collect2 cpp; do + strip $RPM_BUILD_ROOT%{l_prefix}/lib/gcc31-lib/$triple/%{V_major}/$prog >/dev/null 2>&1 || true + done + + # make additional links + ln $RPM_BUILD_ROOT%{l_prefix}/bin/gcc $RPM_BUILD_ROOT%{l_prefix}/bin/cc + #ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/gcc.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/cc.1 + ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/g++.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/c++.1 + + # rename files + ( cd $RPM_BUILD_ROOT%{l_prefix}/bin + for file in *; do + mv ${file} ${file}31 + done + ) + ( cd $RPM_BUILD_ROOT%{l_prefix}/lib + for file in *; do + mv ${file} `echo ${file} | sed -e 's;^\([^.]*\)\(\..*\)$;\131\2;'` + done + ) + ( cd $RPM_BUILD_ROOT%{l_prefix}/man/man1 + for file in *; do + mv ${file} `echo ${file} | sed -e 's;^\([^.]*\)\(\..*\)$;\131\2;'` + done + ) + + # create file list + %{l_rpmtool} files -v -o$RPM_BUILD_DIR/gcc-%{V_file}/files -r$RPM_BUILD_ROOT %{l_files_std} + +%files -f files + +%clean + rm -rf $RPM_BUILD_ROOT +