[3/3] llvm: New package

Message ID 20190704122312.9655-3-stefan.schantl@ipfire.org
State Dropped
Headers show
Series [1/3] cmake: Update to 3.14.5 | expand

Commit Message

Stefan Schantl July 4, 2019, 10:23 p.m. UTC
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
---
 llvm/llvm.nm | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)
 create mode 100644 llvm/llvm.nm

Comments

Michael Tremer July 5, 2019, 1:01 a.m. UTC | #1
Hi,

> On 4 Jul 2019, at 13:23, Stefan Schantl <stefan.schantl@ipfire.org> wrote:
> 
> Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
> ---
> llvm/llvm.nm | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 113 insertions(+)
> create mode 100644 llvm/llvm.nm
> 
> diff --git a/llvm/llvm.nm b/llvm/llvm.nm
> new file mode 100644
> index 000000000..7e89256d3
> --- /dev/null
> +++ b/llvm/llvm.nm
> @@ -0,0 +1,113 @@
> +###############################################################################
> +# IPFire.org    - An Open Source Firewall Solution                            #
> +# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
> +###############################################################################
> +
> +name       = llvm
> +version    = 8.0.0
> +release    = 1
> +
> +groups     = Applications/System
> +url        = http://llvm.org
> +license    = NCSA
> +summary    = The Low Level Virtual Machine.
> +
> +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.
> +end
> +
> +source_dl  = http://releases.llvm.org/%{version}/
> +sources    = %{thisapp}.src.tar.xz
> +
> +build
> +	requires
> +		binutils >= 2.32
> +		cmake >= 3.14.5
> +		gcc
> +		gcc-c++
> +		libedit-devel 3.1-20190324

You forgot the >= sign here which I had to add in order to build this.

> +		libffi-devel
> +		libxml2-devel
> +		zlib-devel
> +	end
> +
> +	DIR_APP = %{DIR_SRC}/%{thisapp}.src
> +
> +	# Limit parallelization to only 2 jobs at the same time.
> +	PARALLELISMFLAGS = -j2
> +
> +	# Set suffix for libdir based on the build architecture.
> +	llvm_libdir_suffix =
> +
> +	if "%{DISTRO_ARCH}" == "x86_64"
> +		llvm_libdir_suffix = 64
> +	end
> +
> +	if "%{DISTRO_ARCH}" == "aarch64"
> +		llvm_libdir_suffix = 64
> +	end
> +
> +	build
> +		# Create and switch into build directory.
> +		mkdir -pv %{DIR_APP}/build
> +		cd %{DIR_APP}/build
> +
> +		%{cmake} .. \
> +			-DLLVM_BUILD_TOOLS=ON \
> +			-DLLVM_BUILD_UTILS=ON \
> +			-DLLVM_BUILD_TESTS=OFF \
> +			-DLLVM_BUILD_EXAMPLES=OFF \
> +			-DLLVM_BUILD_BENCHMARKS=OFF \
> +			-DCMAKE_BUILD_TYPE=Release \

Do we not want debug info here?

> +			-DCMAKE_INSTALL_RPATH=";" \
> +			-DLLVM_BUILD_LLVM_DYLIB=OFF \
> +			-DLLVM_LINK_LLVM_DYLIB=OFF \
> +			-DBUILD_SHARED_LIBS=ON \
> +			-DLLVM_ENABLE_FFI=ON \
> +			-DLLVM_ENABLE_RTTI=ON \
> +			-DLLVM_ENABLE_LIBCXX=OFF \
> +			-DLLVM_TARGETS_TO_BUILD="host;" \
> +			-DCMAKE_C_COMPILER=gcc \
> +			-DCMAKE_CXX_COMPILER=g++ \
> +			-DCMAKE_CXX_FLAGS_RELEASE:STRING="%{CFLAGS}" \
> +			-DCMAKE_EXE_LINKER_FLAGS="%{LDFLAGS}" \
> +			-DENABLE_PIC=1 \
> +			-DLLVM_PARALLEL_LINK_JOBS=1 \

What is this for? Why can we not do this in parallel?

> +			-DLLVM_ENABLE_DUMP=ON \
> +			-DLLVM_LIBDIR_SUFFIX=%{llvm_libdir_suffix} \
> +			-Wno-dev
> +
> +		make %{PARALELLISMFLAGS}
> +	end
> +
> +	test
> +		cd %{DIR_APP}/build
> +
> +		make check-all %{PARALELLISMFLAGS}
> +	end
> +
> +	install
> +		cd %{DIR_APP}/build
> +
> +		make install DESTDIR=%{BUILDROOT}
> +	end
> +end
> +
> +packages
> +	package llvm
> +
> +	package llvm-libs
> +		template LIBS
> +	end
> +
> +	package llvm-devel
> +		template DEVEL
> +	end
> +
> +	package %{name}-debuginfo
> +		template DEBUGINFO
> +	end
> +end
> -- 
> 2.21.0
>

Patch

diff --git a/llvm/llvm.nm b/llvm/llvm.nm
new file mode 100644
index 000000000..7e89256d3
--- /dev/null
+++ b/llvm/llvm.nm
@@ -0,0 +1,113 @@ 
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = llvm
+version    = 8.0.0
+release    = 1
+
+groups     = Applications/System
+url        = http://llvm.org
+license    = NCSA
+summary    = The Low Level Virtual Machine.
+
+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.
+end
+
+source_dl  = http://releases.llvm.org/%{version}/
+sources    = %{thisapp}.src.tar.xz
+
+build
+	requires
+		binutils >= 2.32
+		cmake >= 3.14.5
+		gcc
+		gcc-c++
+		libedit-devel 3.1-20190324
+		libffi-devel
+		libxml2-devel
+		zlib-devel
+	end
+
+	DIR_APP = %{DIR_SRC}/%{thisapp}.src
+
+	# Limit parallelization to only 2 jobs at the same time.
+	PARALLELISMFLAGS = -j2
+
+	# Set suffix for libdir based on the build architecture.
+	llvm_libdir_suffix =
+
+	if "%{DISTRO_ARCH}" == "x86_64"
+		llvm_libdir_suffix = 64
+	end
+
+	if "%{DISTRO_ARCH}" == "aarch64"
+		llvm_libdir_suffix = 64
+	end
+
+	build
+		# Create and switch into build directory.
+		mkdir -pv %{DIR_APP}/build
+		cd %{DIR_APP}/build
+
+		%{cmake} .. \
+			-DLLVM_BUILD_TOOLS=ON \
+			-DLLVM_BUILD_UTILS=ON \
+			-DLLVM_BUILD_TESTS=OFF \
+			-DLLVM_BUILD_EXAMPLES=OFF \
+			-DLLVM_BUILD_BENCHMARKS=OFF \
+			-DCMAKE_BUILD_TYPE=Release \
+			-DCMAKE_INSTALL_RPATH=";" \
+			-DLLVM_BUILD_LLVM_DYLIB=OFF \
+			-DLLVM_LINK_LLVM_DYLIB=OFF \
+			-DBUILD_SHARED_LIBS=ON \
+			-DLLVM_ENABLE_FFI=ON \
+			-DLLVM_ENABLE_RTTI=ON \
+			-DLLVM_ENABLE_LIBCXX=OFF \
+			-DLLVM_TARGETS_TO_BUILD="host;" \
+			-DCMAKE_C_COMPILER=gcc \
+			-DCMAKE_CXX_COMPILER=g++ \
+			-DCMAKE_CXX_FLAGS_RELEASE:STRING="%{CFLAGS}" \
+			-DCMAKE_EXE_LINKER_FLAGS="%{LDFLAGS}" \
+			-DENABLE_PIC=1 \
+			-DLLVM_PARALLEL_LINK_JOBS=1 \
+			-DLLVM_ENABLE_DUMP=ON \
+			-DLLVM_LIBDIR_SUFFIX=%{llvm_libdir_suffix} \
+			-Wno-dev
+
+		make %{PARALELLISMFLAGS}
+	end
+
+	test
+		cd %{DIR_APP}/build
+
+		make check-all %{PARALELLISMFLAGS}
+	end
+
+	install
+		cd %{DIR_APP}/build
+
+		make install DESTDIR=%{BUILDROOT}
+	end
+end
+
+packages
+	package llvm
+
+	package llvm-libs
+		template LIBS
+	end
+
+	package llvm-devel
+		template DEVEL
+	end
+
+	package %{name}-debuginfo
+		template DEBUGINFO
+	end
+end