Skip to content

Instantly share code, notes, and snippets.

@avinash-palleti
Last active August 3, 2018 10:33
Show Gist options
  • Select an option

  • Save avinash-palleti/9ed617b3841904d9b137d897ca94ed5e to your computer and use it in GitHub Desktop.

Select an option

Save avinash-palleti/9ed617b3841904d9b137d897ca94ed5e to your computer and use it in GitHub Desktop.
Working one
%define keepstatic 1
%define gcc_target x86_64-generic-linux
%define libstdcxx_maj 6
%define libstdcxx_full 6.0.25
%define isl_version 0.16.1
%define gccver 7.3.0
%define gccpath gcc-7.3.0
#
# debug_package must be set to %{nil} for functional reasons
# removing this breaks the crt* files for correctness
#
%define debug_package %{nil}
Name : gcc
Version : 7.3.0
Release : 119
URL : http://www.gnu.org/software/gcc/
Source0 : https://mirrors.kernel.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
Source1 : https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2
Summary : GNU cc and gcc C compilers
Group : Development/Tools
License : BSD-3-Clause BSL-1.0 GFDL-1.2 GFDL-1.3 GPL-2.0 GPL-3.0 LGPL-2.1 LGPL-3.0 MIT
BuildRequires : bison
BuildRequires : flex
BuildRequires : gmp-dev
BuildRequires : libstdc++
BuildRequires : libunwind-dev
BuildRequires : mpc-dev
BuildRequires : mpfr-dev
BuildRequires : pkgconfig(zlib)
BuildRequires : sed
BuildRequires : texinfo
BuildRequires : dejagnu
BuildRequires : expect
BuildRequires : autogen
BuildRequires : guile
BuildRequires : tcl
BuildRequires : valgrind-dev
BuildRequires : libxml2-dev
BuildRequires : libxslt
BuildRequires : graphviz
BuildRequires : gdb-dev
BuildRequires : procps-ng
BuildRequires : glibc-libc32
BuildRequires : glibc-dev32
BuildRequires : docbook-xml docbook-utils doxygen
Requires: gcc-libubsan
Requires: gcc-doc
Provides: gcc-symlinks
Provides: cpp
Provides: cpp-symlinks
Provides: gcov
Provides: gfortran-symlinks
Provides: g77
Provides: g77-symlinks
Provides: g++-symlinks
Provides: g++
Provides: gfortran
%description
GNU cc and gcc C compilers.
%prep
%setup -q -n %{gccpath}
%build
# Live in the gcc source tree
tar xf %{SOURCE1} && ln -sf isl-%{isl_version} isl
rm -rf ../gcc-build
mkdir ../gcc-build
pushd ../gcc-build
unset CFLAGS
unset CXXFLAGS
export CFLAGS="-g1 -O3 -fstack-protector -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 "
export CXXFLAGS="-g1 -O3 -Wl,-z,max-page-size=0x1000 "
export CFLAGS_FOR_TARGET="$CFLAGS"
export CXXFLAGS_FOR_TARGET="$CXXFLAGS"
export FFLAGS_FOR_TARGET="$FFLAGS"
export CPATH=/usr/include
export LIBRARY_PATH=/usr/lib64
../%{gccpath}/configure \
--prefix=/opt \
--with-pkgversion='FuSa Clear Linux OS for Intel Architecture'\
--libdir=/opt/lib64 \
--libexecdir=/opt/lib64 \
--with-system-zlib\
--enable-shared\
--enable-clocale=gnu\
--enable-multilib\
--build=%{gcc_target}\
--target=%{gcc_target}\
--enable-languages="c" \
--enable-bootstrap \
--includedir=/opt/include \
--with-gxx-include-dir=/opt/include/c++/ \
--exec-prefix=/opt \
--with-glibc-version=2.19
make %{?_smp_mflags} profiledbootstrap
popd
#%check
#pushd ../gcc-build
#export CHECK_TEST_FRAMEWORK=1
#make -k %{?_smp_mflags} check || :
#popd
%install
export CPATH=/opt/include
export LIBRARY_PATH=/opt/lib64
pushd ../gcc-build
%make_install
cd -
cd %{buildroot}/opt/bin
if [ -e %{gcc_target}-g77 ]; then
ln -sf %{gcc_target}-g77 g77 || true
ln -sf g77 f77 || true
fi
if [ -e x86_64-generic-linux-gfortran ]; then
ln -sf %{gcc_target}-gfortran gfortran || true
ln -sf gfortran f95 || true
fi
ln -sf %{gcc_target}-g++ g++
ln -sf %{gcc_target}-gcc gcc
#ln -sf %{gcc_target}-cpp cpp
install -d %{buildroot}/lib
ln -sf /opt/bin/cpp %{buildroot}/lib/cpp
ln -sf g++ c++
ln -sf gcc cc
cd -
find %{buildroot}/opt/ -name libiberty.a | xargs rm -f
find %{buildroot}/opt/ -name libiberty.h | xargs rm -f
chmod 0755 %{buildroot}/opt/lib64/libgcc_s.so.1
chmod 0755 %{buildroot}/opt/lib32/libgcc_s.so.1
chmod a+x %{buildroot}/opt/bin
chmod a+x %{buildroot}/opt/lib64
chmod -R a+x %{buildroot}/opt/lib*/gcc/
# clang compat (maxdepth as we don't need/want 32bit compat here for now)
(cd %{buildroot}/opt/lib64 && ln -s -t . gcc/x86_64-generic-linux/*/*.[ao])
%find_lang cpplib cpp.lang
%find_lang gcc tmp.lang
%find_lang libstdc++ cxx.lang
cat *.lang > gcc.lang
%files
/opt/bin/%{gcc_target}-gcc-ar
/opt/bin/%{gcc_target}-gcc-ranlib
/opt/bin/%{gcc_target}-gcc-nm
/opt/bin/%{gcc_target}-gcc
/opt/bin/%{gcc_target}-c++
/opt/bin/%{gcc_target}-gcc-%{gccver}
/opt/bin/gcc
/opt/bin/cc
/opt/bin/gcc-ar
/opt/bin/gcc-nm
/opt/bin/gcc-ranlib
/opt/bin/gcov
/opt/bin/gcov-tool
/lib/cpp
/opt/bin/cpp
#/opt/lib64/libvtv*
/opt/lib64/libcc1*
/opt/share/gcc-%{gccver}
/opt/lib64/*.a
/opt/lib64/*.o
#g++
/opt/bin/%{gcc_target}-g++
/opt/bin/c++
/opt/bin/g++
# gcc-dev
/opt/lib64/gcc/%{gcc_target}/%{gccver}/liblto_plugin.so
/opt/lib64/gcc/%{gcc_target}/%{gccver}/plugin/*.so
/opt/bin/gcov-dump
/opt/include/c++
/opt/lib32/libasan.a
/opt/lib32/libasan.so
/opt/lib32/libasan.so.4
/opt/lib32/libasan.so.4.0.0
/opt/lib32/libasan_preinit.o
/opt/lib32/libatomic.a
/opt/lib32/libatomic.so
/opt/lib32/libatomic.so.1
/opt/lib32/libatomic.so.1.2.0
/opt/lib32/libcilkrts.a
/opt/lib32/libcilkrts.so
/opt/lib32/libcilkrts.so.5
/opt/lib32/libcilkrts.so.5.0.0
/opt/lib32/libcilkrts.spec
/opt/lib32/libgcc_s.so
/opt/lib32/libgcc_s.so.1
/opt/lib32/libgomp.a
/opt/lib32/libgomp.so
/opt/lib32/libgomp.so.1
/opt/lib32/libgomp.so.1.0.0
/opt/lib32/libgomp.spec
/opt/lib32/libitm.a
/opt/lib32/libitm.so
/opt/lib32/libitm.so.1
/opt/lib32/libitm.so.1.0.0
/opt/lib32/libitm.spec
/opt/lib32/libmpx.a
/opt/lib32/libmpx.so
/opt/lib32/libmpx.so.2
/opt/lib32/libmpx.so.2.0.1
/opt/lib32/libmpx.spec
/opt/lib32/libmpxwrappers.a
/opt/lib32/libmpxwrappers.so
/opt/lib32/libmpxwrappers.so.2
/opt/lib32/libmpxwrappers.so.2.0.1
/opt/lib32/libquadmath.a
/opt/lib32/libquadmath.so
/opt/lib32/libquadmath.so.0
/opt/lib32/libquadmath.so.0.0.0
/opt/lib32/libsanitizer.spec
/opt/lib32/libssp.a
/opt/lib32/libssp.so
/opt/lib32/libssp.so.0
/opt/lib32/libssp.so.0.0.0
/opt/lib32/libssp_nonshared.a
/opt/lib32/libstdc++.a
/opt/lib32/libstdc++.so
/opt/lib32/libstdc++.so.6
/opt/lib32/libstdc++.so.6.0.24
/opt/lib32/libstdc++.so.6.0.24-gdb.py
/opt/lib32/libstdc++fs.a
/opt/lib32/libsupc++.a
/opt/lib32/libubsan.a
/opt/lib32/libubsan.so
/opt/lib32/libubsan.so.0
/opt/lib32/libubsan.so.0.0.0
/opt/lib64/gcc
/opt/lib64/libasan.so
/opt/lib64/libasan.so.4
/opt/lib64/libasan.so.4.0.0
/opt/lib64/libatomic.so
/opt/lib64/libatomic.so.1
/opt/lib64/libatomic.so.1.2.0
/opt/lib64/libcilkrts.so
/opt/lib64/libcilkrts.so.5
/opt/lib64/libcilkrts.so.5.0.0
/opt/lib64/libcilkrts.spec
/opt/lib64/libgcc_s.so
/opt/lib64/libgcc_s.so.1
/opt/lib64/libgomp.so
/opt/lib64/libgomp.so.1
/opt/lib64/libgomp.so.1.0.0
/opt/lib64/libgomp.spec
/opt/lib64/libitm.so
/opt/lib64/libitm.so.1
/opt/lib64/libitm.so.1.0.0
/opt/lib64/libitm.spec
/opt/lib64/liblsan.so
/opt/lib64/liblsan.so.0
/opt/lib64/liblsan.so.0.0.0
/opt/lib64/libmpx.so
/opt/lib64/libmpx.so.2
/opt/lib64/libmpx.so.2.0.1
/opt/lib64/libmpx.spec
/opt/lib64/libmpxwrappers.so
/opt/lib64/libmpxwrappers.so.2
/opt/lib64/libmpxwrappers.so.2.0.1
/opt/lib64/libquadmath.so
/opt/lib64/libquadmath.so.0
/opt/lib64/libquadmath.so.0.0.0
/opt/lib64/libsanitizer.spec
/opt/lib64/libssp.so
/opt/lib64/libssp.so.0
/opt/lib64/libssp.so.0.0.0
/opt/lib64/libstdc++.so
/opt/lib64/libstdc++.so.6
/opt/lib64/libstdc++.so.6.0.24
/opt/lib64/libstdc++.so.6.0.24-gdb.py
/opt/lib64/libtsan.so
/opt/lib64/libtsan.so.0
/opt/lib64/libtsan.so.0.0.0
/opt/lib64/libubsan.so
/opt/lib64/libubsan.so.0
/opt/lib64/libubsan.so.0.0.0
/opt/share/info/cpp.info
/opt/share/info/cppinternals.info
/opt/share/info/gcc.info
/opt/share/info/gccinstall.info
/opt/share/info/gccint.info
/opt/share/info/libgomp.info
/opt/share/info/libitm.info
/opt/share/info/libquadmath.info
/opt/share/info/dir
/opt/share/locale/be/LC_MESSAGES/cpplib.mo
/opt/share/locale/be/LC_MESSAGES/gcc.mo
/opt/share/locale/ca/LC_MESSAGES/cpplib.mo
/opt/share/locale/da/LC_MESSAGES/cpplib.mo
/opt/share/locale/da/LC_MESSAGES/gcc.mo
/opt/share/locale/de/LC_MESSAGES/cpplib.mo
/opt/share/locale/de/LC_MESSAGES/gcc.mo
/opt/share/locale/de/LC_MESSAGES/libstdc++.mo
/opt/share/locale/el/LC_MESSAGES/cpplib.mo
/opt/share/locale/el/LC_MESSAGES/gcc.mo
/opt/share/locale/eo/LC_MESSAGES/cpplib.mo
/opt/share/locale/es/LC_MESSAGES/cpplib.mo
/opt/share/locale/es/LC_MESSAGES/gcc.mo
/opt/share/locale/fi/LC_MESSAGES/cpplib.mo
/opt/share/locale/fi/LC_MESSAGES/gcc.mo
/opt/share/locale/fr/LC_MESSAGES/cpplib.mo
/opt/share/locale/fr/LC_MESSAGES/gcc.mo
/opt/share/locale/fr/LC_MESSAGES/libstdc++.mo
/opt/share/locale/hr/LC_MESSAGES/gcc.mo
/opt/share/locale/id/LC_MESSAGES/cpplib.mo
/opt/share/locale/id/LC_MESSAGES/gcc.mo
/opt/share/locale/ja/LC_MESSAGES/cpplib.mo
/opt/share/locale/ja/LC_MESSAGES/gcc.mo
/opt/share/locale/nl/LC_MESSAGES/cpplib.mo
/opt/share/locale/nl/LC_MESSAGES/gcc.mo
/opt/share/locale/pt_BR/LC_MESSAGES/cpplib.mo
/opt/share/locale/ru/LC_MESSAGES/cpplib.mo
/opt/share/locale/ru/LC_MESSAGES/gcc.mo
/opt/share/locale/sr/LC_MESSAGES/cpplib.mo
/opt/share/locale/sr/LC_MESSAGES/gcc.mo
/opt/share/locale/sv/LC_MESSAGES/cpplib.mo
/opt/share/locale/sv/LC_MESSAGES/gcc.mo
/opt/share/locale/tr/LC_MESSAGES/cpplib.mo
/opt/share/locale/tr/LC_MESSAGES/gcc.mo
/opt/share/locale/uk/LC_MESSAGES/cpplib.mo
/opt/share/locale/uk/LC_MESSAGES/gcc.mo
/opt/share/locale/vi/LC_MESSAGES/cpplib.mo
/opt/share/locale/vi/LC_MESSAGES/gcc.mo
/opt/share/locale/zh_CN/LC_MESSAGES/cpplib.mo
/opt/share/locale/zh_CN/LC_MESSAGES/gcc.mo
/opt/share/locale/zh_TW/LC_MESSAGES/cpplib.mo
/opt/share/locale/zh_TW/LC_MESSAGES/gcc.mo
/opt/share/man/man1/cpp.1
/opt/share/man/man1/g++.1
/opt/share/man/man1/gcc.1
/opt/share/man/man1/gcov-dump.1
/opt/share/man/man1/gcov-tool.1
/opt/share/man/man1/gcov.1
/opt/share/man/man7/fsf-funding.7
/opt/share/man/man7/gfdl.7
/opt/share/man/man7/gpl.7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment