Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37528044
en ru br
ALT Linux repositórios
5.0: 2.5-alt1

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

 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009