summaryrefslogtreecommitdiff
path: root/lang/clang/Makefile.common
blob: 26240f08a7223726ff70efa301da14abe207e476 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# $NetBSD: Makefile.common,v 1.46 2020/07/02 10:45:38 wiz Exp $
# used by lang/clang/Makefile
# used by lang/clang-tools-extra/Makefile

.include "../../lang/llvm/version.mk"

DISTNAME=	clang-${LLVM_VERSION}.src
CATEGORIES=	lang devel

MAINTAINER=	pkgsrc-users@NetBSD.org
HOMEPAGE=	https://clang.llvm.org/
COMMENT=	C language family frontend for LLVM
LICENSE=	apache-2.0

CONFIGURE_DIRS=		${WRKDIR}/build
CMAKE_ARG_PATH=		${WRKSRC}

USE_LANGUAGES=		c c++14
USE_CMAKE=		yes
GCC_REQD+=		5

CMAKE_ARGS+=	-DLLVM_CONFIG=${LLVM_CONFIG_PATH:Q}
CMAKE_ARGS+=	-DCMAKE_BUILD_TYPE=Release
CMAKE_ARGS+=	-DCMAKE_C_COMPILER=${CC:Q}
CMAKE_ARGS+=	-DCMAKE_CXX_COMPILER=${CXX:Q}

.include "../../mk/compiler.mk"

CMAKE_ARGS.Darwin+=	-DCMAKE_LIBTOOL=/usr/bin/libtool
.if defined(OSX_SDK_PATH)
CMAKE_ARGS.Darwin+=	-DDEFAULT_SYSROOT=${OSX_SDK_PATH:Q}
.endif

REPLACE_PERL+=		test/make_test_dirs.pl
REPLACE_PERL+=		tools/scan-build/bin/scan-build
REPLACE_PERL+=		tools/scan-build/libexec/c++-analyzer
REPLACE_PERL+=		tools/scan-build/libexec/ccc-analyzer
REPLACE_PERL+=		utils/TestUtils/pch-test.pl
REPLACE_PERL+=		utils/analyzer/reducer.pl
REPLACE_PERL+=		utils/analyzer/update_plist_test.pl
REPLACE_PERL+=		www/demo/index.cgi

REPLACE_PYTHON+=	bindings/python/examples/cindex/cindex-dump.py
REPLACE_PYTHON+=	bindings/python/examples/cindex/cindex-includes.py
REPLACE_PYTHON+=	docs/tools/dump_ast_matchers.py
REPLACE_PYTHON+=	docs/tools/dump_format_style.py
REPLACE_PYTHON+=	tools/clang-format/clang-format-diff.py
REPLACE_PYTHON+=	tools/clang-format/git-clang-format
REPLACE_PYTHON+=	tools/scan-build/bin/set-xcode-analyzer
REPLACE_PYTHON+=	tools/scan-view/bin/scan-view
REPLACE_PYTHON+=	utils/ABITest/ABITestGen.py
REPLACE_PYTHON+=	utils/CIndex/completion_logger_server.py
REPLACE_PYTHON+=	utils/CaptureCmd
REPLACE_PYTHON+=	utils/CmpDriver
REPLACE_PYTHON+=	utils/FindSpecRefs
REPLACE_PYTHON+=	utils/FuzzTest
REPLACE_PYTHON+=	utils/TestUtils/deep-stack.py
REPLACE_PYTHON+=	utils/analyzer/CmpRuns.py
REPLACE_PYTHON+=	utils/analyzer/SATestAdd.py
REPLACE_PYTHON+=	utils/analyzer/SATestBuild.py
REPLACE_PYTHON+=	utils/analyzer/SumTimerInfo.py
REPLACE_PYTHON+=	utils/check_cfc/check_cfc.py
REPLACE_PYTHON+=	utils/check_cfc/obj_diff.py
REPLACE_PYTHON+=	utils/check_cfc/test_check_cfc.py
REPLACE_PYTHON+=	utils/hmaptool/hmaptool
REPLACE_PYTHON+=	utils/token-delta.py
REPLACE_PYTHON+=	www/builtins.py

.if ${OPSYS} == "NetBSD" && ${PKGSRC_COMPILER:Mclang}
# command to check if clang is using libc++ or libstdc++
LIBCPP_CHECK!=	\
	printf '%s\n' \
		'\#include <ciso646>' \
		'\#ifdef _LIBCPP_VERSION' \
		'YES' \
		'\#endif' \
	| ${CLANGBASE}/bin/clang++ -x c++ -E - 2>&1 \
	| grep YES || true
.else
LIBCPP_CHECK=	NO
.endif

# patch NetBSD::GetCXXStdlibType
.if ${OPSYS} == "NetBSD" && ${LIBCPP_CHECK} != YES
SUBST_CLASSES+=			libcxx
SUBST_STAGE.libcxx=		pre-configure
SUBST_MESSAGE.libcxx=		Patching toolchain to use libstdc++ (matching the host compiler)
SUBST_FILES.libcxx=		lib/Driver/ToolChains/NetBSD.cpp
SUBST_SED.libcxx=		-e 's,(Major >= 7 || Major == 0),(false),'

CMAKE_ARGS+=			-DCLANG_DEFAULT_CXX_STDLIB:STRING="libstdc++"
.endif

# Enable full LLVM suite on SunOS
.if ${OPSYS} == "SunOS"
.include "../../lang/compiler-rt/buildlink3.mk"
.include "../../lang/libcxx/buildlink3.mk"
.include "../../lang/libcxxabi/buildlink3.mk"
.include "../../lang/libunwind/buildlink3.mk"
CMAKE_ARGS+=    -DCLANG_DEFAULT_RTLIB:STRING="compiler-rt"
CMAKE_ARGS+=    -DCLANG_DEFAULT_CXX_STDLIB:STRING="libc++"
.endif

# 3.8.0 -> 3.8
LLVM_MAJOR=	${PKGVERSION_NOREV:C/^([0-9]+\.[0-9]+)\..*$/\1/}
PLIST_SUBST+=	LLVM_MAJOR=${LLVM_MAJOR}

PLIST_VARS+=	notdylib
.if ${SHLIB_TYPE} == "dylib"
SOEXT=		dylib
.else
SOEXT=		so
PLIST.notdylib=	yes
.endif
PLIST_SUBST+=	SOEXT=${SOEXT}

PKG_OPTIONS_VAR=	PKG_OPTIONS.clang
PKG_SUPPORTED_OPTIONS=	tests

.include "../../mk/bsd.options.mk"

.if !empty(PKG_OPTIONS:Mtests)
CMAKE_ARGS+=		-DLLVM_INCLUDE_TESTS=ON
CMAKE_ARGS+=		-DCLANG_INCLUDE_TESTS=ON
TEST_TARGET=		clang-test
TEST_ENV+=		LD_LIBRARY_PATH=${WRKDIR}/build/lib
.include "../../devel/googletest/buildlink3.mk"
.else
CMAKE_ARGS+=		-DLLVM_INCLUDE_TESTS=OFF
CMAKE_ARGS+=		-DCLANG_INCLUDE_TESTS=OFF
.endif

post-extract:
	${MKDIR} ${WRKDIR}/build

.include "../../textproc/libxml2/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../lang/python/application.mk"
.include "../../lang/python/tool.mk"
DEPENDS+=	llvm-${PKGVERSION_NOREV}{,nb*}:../../lang/llvm
.include "../../lang/llvm/buildlink3.mk"