Group :: Desenvolvimento/C
RPM: llvm
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
# Build options:
#
# --with doxygen
# The doxygen docs are HUGE, so they are not built by default.
#
# --with gcc
# The llvm-gcc package doesn't currently build.
%define lgcc_version 4.2
Name: llvm
Version: 2.5
Release: alt1
Summary: The Low Level Virtual Machine
License: NCSA
Group: Development/C
Url: http://llvm.org/
Source0: http://llvm.org/releases/%version/llvm-%version.tar.gz
Packager: Fr. Br. George <george at altlinux.ru>
%if_with gcc
Source1: http://llvm.org/releases/%version/llvm-gcc%lgcc_version-%version.source.tar.gz
%endif
Patch: llvm-2.1-fix-sed.patch
Patch1: llvm-2.4-fix-ocaml.patch
Patch2: llvm-2.5-gcc44.patch
# Automatically added by buildreq on Sat Mar 21 2009
BuildRequires: flex gcc-c++ groff-base libelf-devel ocamldoc tcl zip
BuildRequires: chrpath groff-ps
%if_with doxygen
BuildRequires: doxygen graphviz
%endif
%description
LLVM is a compiler infrastructure designed for compile-time,
link-time, runtime, and idle-time optimization of programs from
arbitrary programming languages. The compiler infrastructure includes
mirror sets of programming tools as well as libraries with equivalent
functionality.
%if_with gcc
It currently supports compilation of C and C++ programs, using front
ends derived from GCC %lgcc_version.
%endif
%package devel
Summary: Libraries and header files for LLVM
Group: Development/C
Requires: %name = %version-%release
Requires: libstdc++-devel
%description devel
This package contains library and header files needed to develop new
native programs that use the LLVM infrastructure.
%package doc
Summary: Documentation for LLVM
Group: Development/C
Requires: %name = %version-%release
%description doc
Documentation for the LLVM compiler infrastructure.
%package gcc
Summary: C compiler for LLVM
License: GPL
Group: Development/C
Requires: %name = %version-%release
%description gcc
C compiler for LLVM.
%package gcc-c++
Summary: C++ compiler for LLVM
License: GPL
Group: Development/C
Requires: %name-gcc = %version-%release
%description gcc-c++
C++ compiler for LLVM.
%package apidoc
Summary: API documentation for LLVM
Group: Development/C
Requires: %name-docs = %version-%release
%description apidoc
API documentation for the LLVM compiler infrastructure.
%package ocaml
Summary: OCaml binding for LLVM
Group: Development/Functional
Requires: %name = %version-%release
Requires: ocaml-runtime
%description ocaml
OCaml binding for LLVM.
%package ocaml-devel
Summary: Development files for %name-ocaml
Group: Development/Functional
Requires: %name-devel = %version-%release
Requires: %name-ocaml = %version-%release
%description ocaml-devel
The %name-ocaml-devel package contains libraries and signature files
for developing applications that use %name-ocaml.
%prep
%setup -q -n llvm-%version %{?_with_gcc:-a1}
%patch0 -p1 -b .fix-sed
%patch1 -p1 -b .fix-ocaml
%patch2 -p1 -b .gcc44
%build
# Note: --enable-pic can be turned off when 2.6 comes out
%configure \
--libdir=%_libdir/%name \
--datadir=%_datadir/%name \
--disable-static \
--enable-assertions \
--enable-debug-runtime \
--enable-jit \
--enable-optimized \
--enable-pic \
--with-pic
# --enable-targets=host-only \
%make_build OPTIMIZE_OPTION='%optflags'
# tools-only VERBOSE=1 OmitFramePointer='' REQUIRES_EH=1 \
# OPTIMIZE_OPTION='%optflags'
%if_with gcc
# Build llvm-gcc.
export PATH=%_builddir/%{?buildsubdir}/Release/bin:$PATH
mkdir llvm-gcc%lgcc_version-%version.source/build
cd llvm-gcc%lgcc_version-%version.source/build
../configure \
--host=%_host \
--build=%_build \
--target=%_target_platform \
--prefix=%_libdir/llvm-gcc \
--libdir=%_libdir/llvm-gcc/%_lib \
--enable-threads \
--disable-nls \
%ifarch x86_64
--disable-multilib \
--disable-shared \
%endif
--enable-languages=c,c++ \
--enable-llvm=%_builddir/%{?buildsubdir} \
--program-prefix=llvm-
%make_build LLVM_VERSION_INFO=%version
%endif
%install
chmod -x examples/Makefile
# OVERRIDE_libdir used by our patched Makefile.ocaml:
# see http://llvm.org/bugs/show_bug.cgi?id=3153
%makeinstall_std PROJ_libdir=%buildroot/%_libdir/%name \
OVERRIDE_libdir=%_libdir/%name \
PROJ_docsdir=`pwd`/moredocs
find %buildroot -name .dir -print0 | xargs -0r rm -f
file %buildroot/%_bindir/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
# Get rid of erroneously installed example files.
rm %buildroot%_libdir/%name/LLVMHello.*
# And OCaml .o files
rm -f %buildroot%_libdir/ocaml/*.o
# Use relative links for ocaml's libLLVM*.a
#(cd %buildroot%_libdir/ocaml && for i in libLLVM*.a; do
# ln -sf %_libdir/llvm/$i $i;
# done)
# Remove deprecated tools.
rm %buildroot%_bindir/gcc{as,ld}
sed -i 's,ABS_RUN_DIR/lib",ABS_RUN_DIR/%_lib/%name",' \
%buildroot%_bindir/llvm-config
chmod -x %buildroot%_libdir/%name/*.[oa]
# remove documentation makefiles:
# they require the build directory to work
find examples -name 'Makefile' -delete
%if_with gcc
# Install llvm-gcc.
make -C llvm-gcc%lgcc_version-%version.source/build install DESTDIR=%buildroot
cd %buildroot%_libdir/llvm-gcc/%_lib
find . -name '*.la' -print0 | xargs -0r rm
find . -name '*.a' -exec %buildroot%_bindir/llvm-ranlib {} \;
cd ../bin
ln llvm-c++ llvm-gcc llvm-g++ %buildroot%_bindir
rm llvm-cpp llvm-gccbug llvm-gcov %_target_platform-gcc*
cd ..
mv man/man1/llvm-gcc.1 man/man1/llvm-g++.1 %buildroot%_man1dir
rm -r info man %_lib/libiberty.a
rm -r libexec/gcc/%_target_platform/%lgcc_version/install-tools
rm -r %_lib/gcc/%_target_platform/%lgcc_version/install-tools
%endif
%files
%doc CREDITS.TXT LICENSE.TXT README.txt
%exclude %_bindir/llvm-config
%_bindir/bugpoint
%_bindir/llc
%_bindir/lli
%_bindir/llvm*
%_bindir/opt
%_man1dir/*
%if_with doxygen
%exclude %_bindir/llvm-[cg]++
%exclude %_bindir/llvm-gcc
%exclude %_man1dir/llvm-[cg]++.*
%exclude %_man1dir/llvm-gcc.*
%endif
%files devel
%_bindir/llvm-config
%_includedir/%name
%_includedir/%name-c
%_libdir/%name
%files ocaml
%_libdir/ocaml/*.cma
%_libdir/ocaml/*.cmi
%files ocaml-devel
%_libdir/ocaml/*.a
%_libdir/ocaml/*.cmx*
%_libdir/ocaml/*.mli
%files doc
%doc docs/*.{html,css} docs/img examples moredocs/*
%if_with doxygen
%files apidoc
%doc docs/doxygen
%endif
%if_with gcc
%files gcc
%_bindir/llvm-gcc
%dir %_libdir/llvm-gcc
%dir %_libdir/llvm-gcc/bin
%dir %_libdir/llvm-gcc/include
%dir %_libdir/llvm-gcc/%_lib
%dir %_libdir/llvm-gcc/libexec
%dir %_libdir/llvm-gcc/libexec/gcc
%dir %_libdir/llvm-gcc/libexec/gcc/%_target_platform/%lgcc_version
%_libdir/llvm-gcc/%_lib/gcc
%_libdir/llvm-gcc/%_lib/libmudflap*.a
%_libdir/llvm-gcc/bin/%_target_platform-llvm-gcc
%_libdir/llvm-gcc/bin/llvm-gcc
%_libdir/llvm-gcc/include/mf-runtime.h
%_libdir/llvm-gcc/libexec/gcc/%_target_platform/%lgcc_version/cc1
%_libdir/llvm-gcc/libexec/gcc/%_target_platform/%lgcc_version/collect2
%doc %_mandir/man1/llvm-gcc.*
%files gcc-c++
%_bindir/llvm-[cg]++
%_libdir/llvm-gcc/%_lib/lib*++.a
%_libdir/llvm-gcc/bin/%_target_platform-llvm-[cg]++
%_libdir/llvm-gcc/bin/llvm-[cg]++
%_libdir/llvm-gcc/include/c++
%_libdir/llvm-gcc/libexec/gcc/%_target_platform/%lgcc_version/cc1plus
%doc %_mandir/man1/llvm-g++.*
%endif
%changelog
…
Todas as alterações você pod ver aqui
#
# --with doxygen
# The doxygen docs are HUGE, so they are not built by default.
#
# --with gcc
# The llvm-gcc package doesn't currently build.
%define lgcc_version 4.2
Name: llvm
Version: 2.5
Release: alt1
Summary: The Low Level Virtual Machine
License: NCSA
Group: Development/C
Url: http://llvm.org/
Source0: http://llvm.org/releases/%version/llvm-%version.tar.gz
Packager: Fr. Br. George <george at altlinux.ru>
%if_with gcc
Source1: http://llvm.org/releases/%version/llvm-gcc%lgcc_version-%version.source.tar.gz
%endif
Patch: llvm-2.1-fix-sed.patch
Patch1: llvm-2.4-fix-ocaml.patch
Patch2: llvm-2.5-gcc44.patch
# Automatically added by buildreq on Sat Mar 21 2009
BuildRequires: flex gcc-c++ groff-base libelf-devel ocamldoc tcl zip
BuildRequires: chrpath groff-ps
%if_with doxygen
BuildRequires: doxygen graphviz
%endif
%description
LLVM is a compiler infrastructure designed for compile-time,
link-time, runtime, and idle-time optimization of programs from
arbitrary programming languages. The compiler infrastructure includes
mirror sets of programming tools as well as libraries with equivalent
functionality.
%if_with gcc
It currently supports compilation of C and C++ programs, using front
ends derived from GCC %lgcc_version.
%endif
%package devel
Summary: Libraries and header files for LLVM
Group: Development/C
Requires: %name = %version-%release
Requires: libstdc++-devel
%description devel
This package contains library and header files needed to develop new
native programs that use the LLVM infrastructure.
%package doc
Summary: Documentation for LLVM
Group: Development/C
Requires: %name = %version-%release
%description doc
Documentation for the LLVM compiler infrastructure.
%package gcc
Summary: C compiler for LLVM
License: GPL
Group: Development/C
Requires: %name = %version-%release
%description gcc
C compiler for LLVM.
%package gcc-c++
Summary: C++ compiler for LLVM
License: GPL
Group: Development/C
Requires: %name-gcc = %version-%release
%description gcc-c++
C++ compiler for LLVM.
%package apidoc
Summary: API documentation for LLVM
Group: Development/C
Requires: %name-docs = %version-%release
%description apidoc
API documentation for the LLVM compiler infrastructure.
%package ocaml
Summary: OCaml binding for LLVM
Group: Development/Functional
Requires: %name = %version-%release
Requires: ocaml-runtime
%description ocaml
OCaml binding for LLVM.
%package ocaml-devel
Summary: Development files for %name-ocaml
Group: Development/Functional
Requires: %name-devel = %version-%release
Requires: %name-ocaml = %version-%release
%description ocaml-devel
The %name-ocaml-devel package contains libraries and signature files
for developing applications that use %name-ocaml.
%prep
%setup -q -n llvm-%version %{?_with_gcc:-a1}
%patch0 -p1 -b .fix-sed
%patch1 -p1 -b .fix-ocaml
%patch2 -p1 -b .gcc44
%build
# Note: --enable-pic can be turned off when 2.6 comes out
%configure \
--libdir=%_libdir/%name \
--datadir=%_datadir/%name \
--disable-static \
--enable-assertions \
--enable-debug-runtime \
--enable-jit \
--enable-optimized \
--enable-pic \
--with-pic
# --enable-targets=host-only \
%make_build OPTIMIZE_OPTION='%optflags'
# tools-only VERBOSE=1 OmitFramePointer='' REQUIRES_EH=1 \
# OPTIMIZE_OPTION='%optflags'
%if_with gcc
# Build llvm-gcc.
export PATH=%_builddir/%{?buildsubdir}/Release/bin:$PATH
mkdir llvm-gcc%lgcc_version-%version.source/build
cd llvm-gcc%lgcc_version-%version.source/build
../configure \
--host=%_host \
--build=%_build \
--target=%_target_platform \
--prefix=%_libdir/llvm-gcc \
--libdir=%_libdir/llvm-gcc/%_lib \
--enable-threads \
--disable-nls \
%ifarch x86_64
--disable-multilib \
--disable-shared \
%endif
--enable-languages=c,c++ \
--enable-llvm=%_builddir/%{?buildsubdir} \
--program-prefix=llvm-
%make_build LLVM_VERSION_INFO=%version
%endif
%install
chmod -x examples/Makefile
# OVERRIDE_libdir used by our patched Makefile.ocaml:
# see http://llvm.org/bugs/show_bug.cgi?id=3153
%makeinstall_std PROJ_libdir=%buildroot/%_libdir/%name \
OVERRIDE_libdir=%_libdir/%name \
PROJ_docsdir=`pwd`/moredocs
find %buildroot -name .dir -print0 | xargs -0r rm -f
file %buildroot/%_bindir/* | awk -F: '$2~/ELF/{print $1}' | xargs -r chrpath -d
# Get rid of erroneously installed example files.
rm %buildroot%_libdir/%name/LLVMHello.*
# And OCaml .o files
rm -f %buildroot%_libdir/ocaml/*.o
# Use relative links for ocaml's libLLVM*.a
#(cd %buildroot%_libdir/ocaml && for i in libLLVM*.a; do
# ln -sf %_libdir/llvm/$i $i;
# done)
# Remove deprecated tools.
rm %buildroot%_bindir/gcc{as,ld}
sed -i 's,ABS_RUN_DIR/lib",ABS_RUN_DIR/%_lib/%name",' \
%buildroot%_bindir/llvm-config
chmod -x %buildroot%_libdir/%name/*.[oa]
# remove documentation makefiles:
# they require the build directory to work
find examples -name 'Makefile' -delete
%if_with gcc
# Install llvm-gcc.
make -C llvm-gcc%lgcc_version-%version.source/build install DESTDIR=%buildroot
cd %buildroot%_libdir/llvm-gcc/%_lib
find . -name '*.la' -print0 | xargs -0r rm
find . -name '*.a' -exec %buildroot%_bindir/llvm-ranlib {} \;
cd ../bin
ln llvm-c++ llvm-gcc llvm-g++ %buildroot%_bindir
rm llvm-cpp llvm-gccbug llvm-gcov %_target_platform-gcc*
cd ..
mv man/man1/llvm-gcc.1 man/man1/llvm-g++.1 %buildroot%_man1dir
rm -r info man %_lib/libiberty.a
rm -r libexec/gcc/%_target_platform/%lgcc_version/install-tools
rm -r %_lib/gcc/%_target_platform/%lgcc_version/install-tools
%endif
%files
%doc CREDITS.TXT LICENSE.TXT README.txt
%exclude %_bindir/llvm-config
%_bindir/bugpoint
%_bindir/llc
%_bindir/lli
%_bindir/llvm*
%_bindir/opt
%_man1dir/*
%if_with doxygen
%exclude %_bindir/llvm-[cg]++
%exclude %_bindir/llvm-gcc
%exclude %_man1dir/llvm-[cg]++.*
%exclude %_man1dir/llvm-gcc.*
%endif
%files devel
%_bindir/llvm-config
%_includedir/%name
%_includedir/%name-c
%_libdir/%name
%files ocaml
%_libdir/ocaml/*.cma
%_libdir/ocaml/*.cmi
%files ocaml-devel
%_libdir/ocaml/*.a
%_libdir/ocaml/*.cmx*
%_libdir/ocaml/*.mli
%files doc
%doc docs/*.{html,css} docs/img examples moredocs/*
%if_with doxygen
%files apidoc
%doc docs/doxygen
%endif
%if_with gcc
%files gcc
%_bindir/llvm-gcc
%dir %_libdir/llvm-gcc
%dir %_libdir/llvm-gcc/bin
%dir %_libdir/llvm-gcc/include
%dir %_libdir/llvm-gcc/%_lib
%dir %_libdir/llvm-gcc/libexec
%dir %_libdir/llvm-gcc/libexec/gcc
%dir %_libdir/llvm-gcc/libexec/gcc/%_target_platform/%lgcc_version
%_libdir/llvm-gcc/%_lib/gcc
%_libdir/llvm-gcc/%_lib/libmudflap*.a
%_libdir/llvm-gcc/bin/%_target_platform-llvm-gcc
%_libdir/llvm-gcc/bin/llvm-gcc
%_libdir/llvm-gcc/include/mf-runtime.h
%_libdir/llvm-gcc/libexec/gcc/%_target_platform/%lgcc_version/cc1
%_libdir/llvm-gcc/libexec/gcc/%_target_platform/%lgcc_version/collect2
%doc %_mandir/man1/llvm-gcc.*
%files gcc-c++
%_bindir/llvm-[cg]++
%_libdir/llvm-gcc/%_lib/lib*++.a
%_libdir/llvm-gcc/bin/%_target_platform-llvm-[cg]++
%_libdir/llvm-gcc/bin/llvm-[cg]++
%_libdir/llvm-gcc/include/c++
%_libdir/llvm-gcc/libexec/gcc/%_target_platform/%lgcc_version/cc1plus
%doc %_mandir/man1/llvm-g++.*
%endif
%changelog
…
Todas as alterações você pod ver aqui