## ## 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 11 # 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: 20020313 # 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