Skip to content

Commit

Permalink
devel/llvm15: add a lite FLAVOR
Browse files Browse the repository at this point in the history
The lite flavor is for when you just need a FreeBSD compiler (e.g., in
CI).  By default it includes CLANG and LLD as well as backends required
for FreeBSD and FreeBSD ports (BE_NATIVE, BE_AMDGPU, and BE_WASM).

The lite install is ~350GiB on amd64 vs ~1.7GiB for default and it has
only a single dependency (zstandard).  (The goal was no dependencies,
but libzstd is a private lib in base.)

Bump PORT_REVISION due to removal of clang libxml2 dependency.

Sponsored by:	DARPA
  • Loading branch information
brooksdavis committed Apr 2, 2023
1 parent 87c9657 commit af979dd
Showing 1 changed file with 26 additions and 7 deletions.
33 changes: 26 additions & 7 deletions devel/llvm15/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
PORTNAME= llvm
DISTVERSION= 15.0.7
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= devel lang
MASTER_SITES= https://github.com/llvm/llvm-project/releases/download/llvmorg-${DISTVERSION:S/rc/-rc/}/ \
https://${PRE_}releases.llvm.org/${LLVM_RELEASE}${RCDIR}/
Expand All @@ -22,6 +22,10 @@ LICENSE:= ${LICENSE:NARM}

LIB_DEPENDS= libzstd.so:archivers/zstd

FLAVORS= default lite
FLAVOR?= ${FLAVORS:[1]}
lite_PKGNAMESUFFIX= ${LLVM_SUFFIX}-lite

LLVM_RELEASE= ${DISTVERSION:C/rc.*//}
LLVM_MAJOR= ${LLVM_RELEASE:C/\.[0-9]\.[0-9]$//}
LLVM_SUFFIX= ${LLVM_MAJOR}
Expand Down Expand Up @@ -75,6 +79,7 @@ CMAKE_ARGS+= -DLLVM_HOST_TRIPLE=${CONFIGURE_TARGET}
CMAKE_ARGS+= -DCMAKE_INSTALL_MANDIR:PATH="share/man"
CMAKE_ARGS+= -DLLVM_PARALLEL_LINK_JOBS=1
CMAKE_ARGS+= -DLLVM_ENABLE_Z3_SOLVER=OFF
CMAKE_ARGS+= -DLLVM_ENABLE_LIBXML2=OFF
CMAKE_ARGS+= -DLLVM_ENABLE_LIBEDIT=OFF
CMAKE_ARGS+= -DPython3_EXECUTABLE=${PYTHON_CMD}
# LLVM likes to pick up ${LOCALBASE}/lib/libtinfo.so.*
Expand All @@ -85,30 +90,39 @@ CMAKE_ARGS+= -DLLVM_ENABLE_TERMINFO=OFF
CFLAGS+= -DNDEBUG
CXXFLAGS+= -DNDEBUG

OPTIONS_DEFINE= BE_AMDGPU BE_WASM CLANG DOCS EXTRAS FLANG LIT LLD LLDB MLIR PYCLANG STATIC_LIBS
OPTIONS_DEFINE= BE_AMDGPU BE_WASM CLANG DOCS LLD STATIC_LIBS
OPTIONS_DEFAULT= BE_AMDGPU BE_WASM CLANG LLD
OPTIONS_SINGLE= BACKENDS
OPTIONS_SINGLE_BACKENDS=BE_FREEBSD BE_NATIVE BE_STANDARD
OPTIONS_SUB= yes

.if ${FLAVOR:Mlite}
OPTIONS_DEFAULT+= BE_NATIVE
.else
OPTIONS_DEFINE+= EXTRAS FLANG LIT LLDB MLIR OPENMP PYCLANG
OPTIONS_DEFINE_aarch64= OPENMP
OPTIONS_DEFINE_amd64= COMPILER_RT GOLD OPENMP
OPTIONS_DEFINE_i386= COMPILER_RT OPENMP
OPTIONS_DEFINE_powerpc= COMPILER_RT GOLD
OPTIONS_DEFINE_powerpc64= COMPILER_RT GOLD OPENMP
OPTIONS_DEFINE_powerpc64le= COMPILER_RT GOLD OPENMP
OPTIONS_DEFINE_riscv64= COMPILER_RT OPENMP
OPTIONS_DEFAULT= BE_AMDGPU BE_STANDARD BE_WASM CLANG EXTRAS LIT LLD LLDB PYCLANG STATIC_LIBS

OPTIONS_DEFAULT+= BE_STANDARD EXTRAS LIT LLDB PYCLANG STATIC_LIBS
OPTIONS_DEFAULT_aarch64= OPENMP
OPTIONS_DEFAULT_amd64= COMPILER_RT GOLD OPENMP
OPTIONS_DEFAULT_i386= COMPILER_RT
OPTIONS_DEFAULT_powerpc= COMPILER_RT GOLD
OPTIONS_DEFAULT_powerpc64= COMPILER_RT GOLD OPENMP
OPTIONS_DEFAULT_powerpc64le= COMPILER_RT GOLD OPENMP
OPTIONS_DEFAULT_riscv64= COMPILER_RT OPENMP

OPTIONS_EXCLUDE_armv6= FLANG
OPTIONS_EXCLUDE_armv7= FLANG
OPTIONS_EXCLUDE_i386= FLANG
OPTIONS_EXCLUDE_powerpc= FLANG
OPTIONS_EXCLUDE_riscv64= LLDB
OPTIONS_SINGLE= BACKENDS
OPTIONS_SINGLE_BACKENDS=BE_FREEBSD BE_NATIVE BE_STANDARD
OPTIONS_SUB= yes
.endif
# All non-backend options
_ALL_OPTIONS= CLANG COMPILER_RT DOCS EXTRAS FLANG GOLD LIT LLD LLDB MLIR OPENMP PYCLANG STATIC_LIBS

Expand All @@ -133,7 +147,10 @@ CLANG_SUB_LIST= XCC=clang${LLVM_SUFFIX} \
XCPP=clang-cpp${LLVM_SUFFIX} \
XLD=ld.lld${LLVM_SUFFIX} \
X_COMPILER_TYPE=clang
CLANG_USE= GNOME=libxml2
.if ${FLAVOR:Mlite}
# scan-build does require perl, but lite users can install it manually.
CLANG_USE= PERL5=build
.endif
COMPILER_RT_DESC= Sanitizer libraries
COMPILER_RT_CMAKE_ON= -DCOMPILER_RT_INSTALL_PATH=${LLVM_PREFIX}/lib/clang/${LLVM_RELEASE}
COMPILER_RT_PLIST_FILES=${_COMPILER_RT_LIBS:S|^|${_CRTLIBDIR}/|} \
Expand Down Expand Up @@ -183,6 +200,8 @@ PYCLANG_VARS= _USES_PYTHON=python:3.6+
PYCLANG_CMAKE_ON= -DCLANG_PYTHON_BINDINGS_VERSIONS=${PYTHON_VER}
STATIC_LIBS_DESC= Install static libraries (does not effect sanitizers)

CONFLICTS_INSTALL= ${PORTNAME}${LLVM_SUFFIX} ${PORTNAME}${LLVM_SUFFIX}-lite

.if defined(WITH_DEBUG)
CMAKE_BUILD_TYPE= RelWithDebInfo
STRIP=
Expand Down

0 comments on commit af979dd

Please sign in to comment.