## ## llvm.spec -- OpenPKG RPM Package Specification ## Copyright (c) 2000-2019 OpenPKG Project ## ## 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. ## # package information Name: llvm Summary: Low-Level Virtual Machine (LLVM) URL: http://llvm.org/ Vendor: University of Illinois Packager: OpenPKG Project Distribution: OpenPKG Community Class: PLUS Group: Compiler License: University of Illinois Open Source License Version: 6.0.1 Release: 20180626 # list of sources Source0: http://llvm.org/releases/%{version}/llvm-%{version}.src.tar.xz Source1: http://llvm.org/releases/%{version}/cfe-%{version}.src.tar.xz Source2: http://llvm.org/releases/%{version}/compiler-rt-%{version}.src.tar.xz Source3: http://llvm.org/releases/%{version}/libcxx-%{version}.src.tar.xz Patch0: llvm.patch # build information BuildPreReq: OpenPKG, openpkg >= 20160101, make, gcc, gcc::with_cxx = yes, perl, cmake PreReq: OpenPKG, openpkg >= 20160101 BuildPreReq: libexecinfo PreReq: libexecinfo %description Low Level Virtual Machine (LLVM) is a compilation strategy designed to enable effective program optimization across the entire lifetime of a program. LLVM supports effective optimization at compile time, link-time (particularly interprocedural), run-time and offline (i.e., after software is installed), while remaining transparent to developers and maintaining compatibility with existing build scripts. LLVM is a virtual instruction set. LLVM is a low-level object code representation that uses simple RISC-like instructions. LLVM provides a link-time optimization framework with a growing set of global and interprocedural analyses and transformations, static back-ends for the X86, X86-64, PowerPC 32/64, ARM, Thumb, IA-64, Alpha and SPARC architectures, a back-end which emits portable C code, and a Just-In-Time compiler for X86, X86-64, PowerPC 32/64 processors. %track prog llvm = { version = %{version} url = http://llvm.org/releases/download.html regex = llvm-(__VER__)\.src\.tar\.xz } %prep %setup -q -n llvm-%{version}.src %setup -q -n llvm-%{version}.src -T -D -a 1 %setup -q -n llvm-%{version}.src -T -D -a 2 %setup -q -n llvm-%{version}.src -T -D -a 3 mv cfe-%{version}.src tools/clang mv compiler-rt-%{version}.src projects/compiler-rt mv libcxx-%{version}.src projects/libcxx %patch -p0 %build mkdir build cd build cmake \ -Wno-dev \ -DCMAKE_BUILD_TYPE="Release" \ -DCMAKE_C_COMPILER="%{l_cc}" \ -DCMAKE_C_FLAGS="%{l_cflags -O} %{l_cppflags}" \ -DCMAKE_CXX_COMPILER="%{l_cxx}" \ -DCMAKE_CXX_FLAGS="%{l_cxxflags -O} %{l_cppflags}" \ -DCMAKE_EXE_LINKER_FLAGS="%{l_ldflags}" \ -DCMAKE_INSTALL_PREFIX="%{l_prefix}" \ -DLLVM_ENABLE_PIC=ON \ -DLLVM_BINDINGS_LIST="" \ -DLLVM_OPTIMIZED_TABLEGEN=ON \ -DLLVM_ENABLE_ASSERTIONS=OFF \ -DBUILD_SHARED_LIBS=OFF \ .. %{l_make} %{l_mflags -O} %install ( cd build %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT ) || exit $? rm -rf $RPM_BUILD_ROOT%{l_prefix}/docs find $RPM_BUILD_ROOT%{l_prefix} -name ".dir" -type f -print | xargs rm -f strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} %files -f files %clean