bring back broken llvm-devel ports
[dports.git] / devel / llvm-devel / Makefile
1 # Created by: Hye-Shik Chang
2 # $FreeBSD$
3
4 PORTNAME=       llvm
5 PORTVERSION=    ${LLVM_MAJOR}.0.d${SNAPDATE}
6 PORTREVISION=   0
7 CATEGORIES=     devel lang
8 PKGNAMESUFFIX=  -devel
9
10 MAINTAINER=     brooks@FreeBSD.org
11 COMMENT=        LLVM and Clang
12
13 .include "Makefile.LICENSE"
14
15 LLVM_SUFFIX=    -devel
16 LLVM_PREFIX=    ${PREFIX}/llvm${LLVM_SUFFIX}
17 DOCSDIR=        ${PREFIX}/share/doc/${PORTNAME}${LLVM_SUFFIX}
18 DATADIR=        ${PREFIX}/share/${PORTNAME}${LLVM_SUFFIX}
19
20 IGNORE=         Does not build but llvm40, llvm60 need some files
21 BUILD_DEPENDS=
22
23 USES=           cmake compiler:c++11-lib libedit perl5 \
24                 shebangfix
25 USE_LDCONFIG=   ${LLVM_PREFIX}/lib
26 _USES_PYTHON?=  python:build:2.7
27 USES+=          ${_USES_PYTHON}
28 SHEBANG_FILES=  utils/lit/lit.py utils/llvm-lit/llvm-lit.in \
29                 tools/clang/utils/hmaptool/hmaptool \
30                 tools/clang/tools/scan-view/bin/scan-view \
31                 tools/clang/tools/clang-format/git-clang-format \
32                 tools/clang/tools/clang-format/clang-format-diff.py \
33                 tools/clang/tools/extra/clang-tidy/tool/clang-tidy-diff.py \
34                 tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py \
35                 tools/clang/tools/extra/include-fixer/find-all-symbols/tool/run-find-all-symbols.py \
36                 tools/opt-viewer/optrecord.py \
37                 tools/opt-viewer/opt-diff.py \
38                 tools/opt-viewer/opt-stats.py \
39                 tools/opt-viewer/opt-viewer.py
40
41 SUB_FILES=      llvm-wrapper.sh
42 SUB_LIST=       LLVM_PREFIX="${LLVM_PREFIX}" LLVM_SUFFIX="${LLVM_SUFFIX}"
43
44 CMAKE_INSTALL_PREFIX=   ${LLVM_PREFIX}
45 CMAKE_ARGS=     -DLLVM_BUILD_LLVM_DYLIB=ON
46 CMAKE_ARGS+=    -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
47 CMAKE_ARGS+=    -DLLVM_ENABLE_RTTI=ON
48 CMAKE_ARGS+=    -DLLVM_DEFAULT_TARGET_TRIPLE=${CONFIGURE_TARGET}
49 CMAKE_ARGS+=    -DLLVM_HOST_TRIPLE=${CONFIGURE_TARGET}
50 # Following commit https://github.com/kitware/cmake/commit/956054
51 # we need to either change the whole man-shuffle below, or simply
52 # redefine CMAKE_INSTALL_MANDIR
53 CMAKE_ARGS+=    -DCMAKE_INSTALL_MANDIR:PATH="share/man"
54 CMAKE_ARGS+=    -DLLVM_PARALLEL_LINK_JOBS=1
55
56 # Disable assertions.  They should be disabled by cmake, but USES=cmake
57 # overrides -DCMAKE_*_FLAGS_RELEASE.
58 CFLAGS+=        -DNDEBUG
59 CXXFLAGS+=      -DNDEBUG
60
61 USE_GITHUB=     yes
62 GH_ACCOUNT=     llvm-mirror
63 GH_TAGNAME=     ${LLVM_COMMIT}
64
65 .include "Makefile.snapshot"
66
67 OPTIONS_DEFINE= CLANG DOCS EXTRAS LIT LLD LLDB
68 OPTIONS_DEFINE_amd64=   COMPILER_RT GOLD OPENMP
69 OPTIONS_DEFINE_i386=    COMPILER_RT OPENMP
70 OPTIONS_DEFAULT=        CLANG EXTRAS LIT LLD LLDB
71 OPTIONS_DEFAULT_amd64=  COMPILER_RT GOLD OPENMP
72 OPTIONS_DEFAULT_i386=   COMPILER_RT OPENMP
73 OPTIONS_SUB=    yes
74
75 PLIST_FILES=
76
77 CLANG_DESC=     Build clang
78 CLANG_EXTRA_PATCHES=    ${PATCHDIR}/clang
79 CLANG_CONFLICTS_INSTALL=        clang-devel-3.[1234567]*
80 CLANG_GH_PROJECT=       clang:clang
81 CLANG_GH_SUBDIR=        tools/clang:clang
82 CLANG_GH_TAGNAME=       ${CLANG_COMMIT}:clang
83 CLANG_CMAKE_ON=         -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
84 CLANG_PORTDOCS=         clang
85 CLANG_USE=              GNOME=libxml2
86 COMPILER_RT_DESC=       Sanitizer libraries
87 COMPILER_RT_IMPLIES=    CLANG
88 COMPILER_RT_GH_PROJECT= compiler-rt:compiler_rt
89 COMPILER_RT_GH_TAGNAME= ${COMPILER_RT_COMMIT}:compiler_rt
90 COMPILER_RT_PLIST_FILES=${_COMPILER_RT_LIBS:S|^|${_CRTLIBDIR}/|} \
91                         ${_COMPILER_RT_BLACKLISTS:S|^|${_CRTBLDIR}/|}
92 DOCS_PORTDOCS=          llvm
93 DOCS_BUILD_DEPENDS=     sphinx-build-${PYTHON_VER}:textproc/py-sphinx@${PY_FLAVOR} \
94                         ${PYTHON_PKGNAMEPREFIX}recommonmark>=0.0.20180530:textproc/py-recommonmark@${PY_FLAVOR}
95 DOCS_CMAKE_ON=          -DLLVM_ENABLE_SPHINX=ON \
96                         -DSPHINX_EXECUTABLE=${LOCALBASE}/bin/sphinx-build-${PYTHON_VER} \
97                         -DSPHINX_WARNINGS_AS_ERRORS=OFF \
98                         -DLLVM_BUILD_DOCS=ON
99 DOCS_PLIST_FILES=       ${MAN1SRCS:S|^|man/man1/|:S|.1$|${LLVM_SUFFIX}.1.gz|}
100 EXTRAS_DESC=            Extra clang tools
101 EXTRAS_IMPLIES=         CLANG
102 EXTRAS_GH_PROJECT=      clang-tools-extra:extras
103 EXTRAS_GH_SUBDIR=       tools/clang/tools/extra:extras
104 EXTRAS_GH_TAGNAME=      ${EXTRAS_COMMIT}:extras
105 LIT_DESC=               Install lit and FileCheck test tools
106 LLD_DESC=               Install lld, the LLVM linker
107 LLD_GH_PROJECT=         lld:lld
108 LLD_GH_SUBDIR=          tools/lld:lld
109 LLD_GH_TAGNAME=         ${LLD_COMMIT}:lld
110 LLDB_BUILD_DEPENDS=     swig3.0:devel/swig30
111 LLDB_DESC=              Install lldb, the LLVM debugger
112 LLDB_GH_PROJECT=        lldb:lldb
113 LLDB_GH_SUBDIR=         tools/lldb:lldb
114 LLDB_GH_TAGNAME=        ${LLDB_COMMIT}:lldb
115 LLDB_IMPLIES=           CLANG
116 LLDB_VARS=              _USES_PYTHON=python:2.7
117 OPENMP_DESC=            Install libomp, the LLVM OpenMP runtime library
118 OPENMP_CONFLICTS_INSTALL=       libiomp5-devel-*
119 OPENMP_GH_PROJECT=      openmp:openmp
120 OPENMP_GH_SUBDIR=       projects/openmp:openmp
121 OPENMP_GH_TAGNAME=      ${OPENMP_COMMIT}:openmp
122 OPENMP_EXTRA_PATCHES=   ${PATCHDIR}/openmp
123 GOLD_DESC=              Build the LLVM Gold plugin for LTO
124 GOLD_CMAKE_ON=          -DLLVM_BINUTILS_INCDIR=${LOCALBASE}/include
125 GOLD_BUILD_DEPENDS=     ${LOCALBASE}/bin/ld.gold:devel/binutils
126
127 PLIST_SUB+=     LLVM_MAJOR=${LLVM_MAJOR} \
128                 LLVM_RELEASE=${LLVM_RELEASE}
129
130 COMMANDS=       bugpoint \
131                 dsymutil \
132                 llc \
133                 lli \
134                 llvm-ar \
135                 llvm-as \
136                 llvm-bcanalyzer \
137                 llvm-cat \
138                 llvm-cfi-verify \
139                 llvm-config \
140                 llvm-cov \
141                 llvm-cvtres \
142                 llvm-cxxmap \
143                 llvm-diff \
144                 llvm-dis \
145                 llvm-dlltool \
146                 llvm-dwarfdump \
147                 llvm-dwp \
148                 llvm-elfabi \
149                 llvm-exegesis \
150                 llvm-extract \
151                 llvm-link \
152                 llvm-mc \
153                 llvm-modextract \
154                 llvm-mt \
155                 llvm-nm \
156                 llvm-objcopy \
157                 llvm-objdump \
158                 llvm-opt-report \
159                 llvm-pdbutil \
160                 llvm-profdata \
161                 llvm-ranlib \
162                 llvm-rc \
163                 llvm-readelf \
164                 llvm-readobj \
165                 llvm-rtdyld \
166                 llvm-size \
167                 llvm-split \
168                 llvm-stress \
169                 llvm-strings \
170                 llvm-strip \
171                 llvm-symbolizer \
172                 llvm-tblgen \
173                 llvm-undname \
174                 llvm-xray \
175                 macho-dump \
176                 opt \
177                 sancov
178 FIRST_COMMAND=  ${COMMANDS:C/^/XXXX/1:MXXXX*:C/^XXXX//}
179
180 MAN1SRCS+=      bugpoint.1 \
181                 dsymutil.1 \
182                 llc.1 \
183                 lli.1 \
184                 llvm-ar.1 \
185                 llvm-as.1 \
186                 llvm-bcanalyzer.1 \
187                 llvm-build.1 \
188                 llvm-config.1 \
189                 llvm-cov.1 \
190                 llvm-cxxmap.1 \
191                 llvm-diff.1 \
192                 llvm-dis.1 \
193                 llvm-dwarfdump.1 \
194                 llvm-exegesis.1 \
195                 llvm-extract.1 \
196                 llvm-lib.1 \
197                 llvm-link.1 \
198                 llvm-mca.1 \
199                 llvm-nm.1 \
200                 llvm-objdump.1 \
201                 llvm-pdbutil.1 \
202                 llvm-profdata.1 \
203                 llvm-readobj.1 \
204                 llvm-stress.1 \
205                 llvm-symbolizer.1 \
206                 opt.1 \
207                 tblgen.1
208
209 STRIP_LIBS=     BugpointPasses.so \
210                 LLVMHello.so \
211                 ${LIBNAME}.0 \
212                 libLTO.so
213
214 EXTRAS_COMMANDS= \
215                 clang-apply-replacements \
216                 clang-change-namespace \
217                 clang-include-fixer \
218                 clang-modernize \
219                 clang-query \
220                 clang-rename \
221                 clang-reorder-fields \
222                 clang-tidy \
223                 find-all-symbols \
224                 modularize
225 EXTRAS_LIBS=    \
226                 libclangApplyReplacements \
227                 libclangIncludeFixer \
228                 libclangRename \
229                 libclangQuery \
230                 libclangTidy \
231                 libclangTidyGoogleModule \
232                 libclangTidyLLVMModule \
233                 libclangTidyMiscModule \
234                 libclangTidyReadabilityModule \
235                 libclangTidyUtils \
236                 libfindAllSymbols \
237                 libmodernizeCore
238 EXTRAS_PATTERN= ${EXTRAS_COMMANDS:tW:C/  */|/g}|${EXTRAS_LIBS:tW:C/  */|/g}
239
240 .include <bsd.port.options.mk>
241
242 # keep in sync with /usr/src/lib/clang/clang.build.mk 
243 # ----------- start of sync block ------------------
244 # Armv6 and armv7 uses hard float abi, unless the CPUTYPE has soft in it.
245 # arm (for armv4 and armv5 CPUs) always uses the soft float ABI.
246 # For all other targets, we stick with 'unknown'.
247 .if ${ARCH:Marmv[67]*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "")
248 TARGET_ABI=     -gnueabihf
249 .elif ${ARCH:Marm*}
250 TARGET_ABI=     -gnueabi  
251 .else
252 TARGET_ABI=
253 .endif
254
255 CONFIGURE_TARGET:=${ARCH:C/amd64/x86_64/:C/arm64/aarch64/}-portbld-${OPSYS:tl}${OSREL}${TARGET_ABI}
256 # ----------- end of sync block --------------------
257
258 .if ${PORT_OPTIONS:MCLANG}
259 COMMANDS+=      c-index-test \
260                 clang \
261                 clang++ \
262                 clang-check \
263                 clang-cpp \
264                 clang-extdef-mapping \
265                 clang-format \
266                 clang-import-test \
267                 clang-offload-bundler \
268                 clangd \
269                 diagtool \
270                 hmaptool \
271                 scan-build \
272                 scan-view
273 MAN1SRCS+=      clang.1 \
274                 diagtool.1 \
275                 scan-build.1
276 CLANG_PATTERN=  (c-index-test|clang|scan-|Reporter.py|ScanView.py|scanview.css|sorttable.js|startfile.py|-analyzer)
277 USES+=  gnome
278 .endif
279
280 .if ${PORT_OPTIONS:MCOMPILER_RT}
281 COMPILER_RT_PATTERN=    (sanitizer|include.xray)
282 .endif
283
284 .if ${PORT_OPTIONS:MLIT}
285 MAN1SRCS+=      lit.1 FileCheck.1
286 LIT_COMMANDS=   lit llvm-lit FileCheck
287 .endif
288
289 .if ${PORT_OPTIONS:MLLD}
290 COMMANDS+=      ld.lld \
291                 ld64.lld \
292                 wasm-ld
293 .endif
294
295 .if ${PORT_OPTIONS:MLLDB}
296 COMMANDS+=      lldb \
297                 lldb-argdumper \
298                 lldb-mi \
299                 lldb-server \
300                 lldb-test \
301                 lldb-vscode
302 .endif
303
304 .if ! ${OPTIONS_DEFINE:MCOMPILER_RT}
305 # Hack to disable COMPILER_RT in plist of unsupported architectures
306 PLIST_SUB+=     COMPILER_RT="@comment "
307 .else
308 .endif
309
310 .if ! ${OPTIONS_DEFINE:MGOLD}
311 # Hack to disable GOLD in plist of unsupported architectures
312 PLIST_SUB+=     GOLD="@comment "
313 .else
314 .endif
315
316 .if ! ${OPTIONS_DEFINE:MOPENMP}
317 # Hack to disable OPENMP in plist of unsupported architectures
318 PLIST_SUB+=     OPENMP="@comment "
319 .else
320 .endif
321
322 .include <bsd.port.pre.mk>
323
324 .if defined(WITH_DEBUG)
325 CMAKE_BUILD_TYPE=       RelWithDebInfo
326 STRIP=
327 .endif
328
329 _CRTLIBDIR=     ${LLVM_PREFIX:S|${PREFIX}/||}/lib/clang/${LLVM_RELEASE}/lib/freebsd
330 _CRTBLDIR=      ${LLVM_PREFIX:S|${PREFIX}/||}/share
331 _COMPILER_RT_BLACKLISTS=        cfi_blacklist.txt
332 .if ${ARCH} == "amd64"
333 _COMPILER_RT_BLACKLISTS+=       asan_blacklist.txt
334 _COMPILER_RT_BLACKLISTS+=       msan_blacklist.txt
335 _COMPILER_RT_LIBS= \
336         libclang_rt.asan-preinit-x86_64.a \
337         libclang_rt.asan-x86_64.a \
338         libclang_rt.asan-x86_64.a.syms \
339         libclang_rt.asan-x86_64.so \
340         libclang_rt.asan_cxx-x86_64.a \
341         libclang_rt.asan_cxx-x86_64.a.syms \
342         libclang_rt.builtins-x86_64.a \
343         libclang_rt.cfi-x86_64.a \
344         libclang_rt.cfi_diag-x86_64.a \
345         libclang_rt.dd-x86_64.a \
346         libclang_rt.dyndd-x86_64.so \
347         libclang_rt.esan-x86_64.a \
348         libclang_rt.esan-x86_64.a.syms \
349         libclang_rt.fuzzer-x86_64.a \
350         libclang_rt.fuzzer_no_main-x86_64.a \
351         libclang_rt.lsan-x86_64.a \
352         libclang_rt.msan-x86_64.a \
353         libclang_rt.msan-x86_64.a.syms \
354         libclang_rt.msan_cxx-x86_64.a \
355         libclang_rt.msan_cxx-x86_64.a.syms \
356         libclang_rt.xray-basic-x86_64.a \
357         libclang_rt.xray-fdr-x86_64.a \
358         libclang_rt.xray-profiling-x86_64.a \
359         libclang_rt.xray-x86_64.a \
360         libclang_rt.profile-x86_64.a \
361         libclang_rt.safestack-x86_64.a \
362         libclang_rt.stats-x86_64.a \
363         libclang_rt.stats_client-x86_64.a \
364         libclang_rt.tsan-x86_64.a \
365         libclang_rt.tsan-x86_64.a.syms \
366         libclang_rt.tsan_cxx-x86_64.a \
367         libclang_rt.tsan_cxx-x86_64.a.syms \
368         libclang_rt.ubsan_minimal-x86_64.a \
369         libclang_rt.ubsan_minimal-x86_64.a.syms \
370         libclang_rt.ubsan_minimal-x86_64.so \
371         libclang_rt.ubsan_standalone-x86_64.a \
372         libclang_rt.ubsan_standalone-x86_64.a.syms \
373         libclang_rt.ubsan_standalone-x86_64.so \
374         libclang_rt.ubsan_standalone_cxx-x86_64.a \
375         libclang_rt.ubsan_standalone_cxx-x86_64.a.syms
376 .endif
377 .if ${ARCH} == "i386"
378 _COMPILER_RT_BLACKLISTS+=       asan_blacklist.txt
379 _COMPILER_RT_LIBS+= \
380         libclang_rt.asan-i386.a \
381         libclang_rt.asan-i386.so \
382         libclang_rt.asan-preinit-i386.a \
383         libclang_rt.asan_cxx-i386.a \
384         libclang_rt.builtins-i386.a \
385         libclang_rt.cfi-i386.a \
386         libclang_rt.cfi_diag-i386.a \
387         libclang_rt.lsan-i386.a \
388         libclang_rt.profile-i386.a \
389         libclang_rt.safestack-i386.a \
390         libclang_rt.stats-i386.a \
391         libclang_rt.stats_client-i386.a \
392         libclang_rt.ubsan_minimal-i386.a \
393         libclang_rt.ubsan_minimal-i386.so \
394         libclang_rt.ubsan_standalone-i386.a \
395         libclang_rt.ubsan_standalone-i386.so \
396         libclang_rt.ubsan_standalone_cxx-i386.a
397 .endif
398
399 .if ${PORT_OPTIONS:MEXTRAS}
400 COMMANDS+=      ${EXTRAS_COMMANDS}
401 MAN1SRCS+=      extraclangtools.1
402 PORTDOCS+=      clang-tools
403 .endif
404
405 .if ${PORT_OPTIONS:MLLD}
406 COMMANDS+=      lld \
407                 lld-link
408 PORTDOCS+=      lld
409 .endif
410
411 post-patch:
412         ${REINPLACE_CMD} -e 's|import lit|import lit${LLVM_SUFFIX}|' \
413             -e 's|from lit|from lit${LLVM_SUFFIX}|' \
414             -e 's|lit\.|lit${LLVM_SUFFIX}.|' \
415             ${WRKSRC}/utils/lit/lit.py ${WRKSRC}/utils/lit/lit/*.py
416         ${REINPLACE_CMD} -e 's,/usr/local/,${LOCALBASE}/,' \
417             ${WRKSRC}/CMakeLists.txt
418
419 post-patch-CLANG-on:
420         ${REINPLACE_CMD} -e 's|%%LLVM_SUFFIX%%|${LLVM_SUFFIX}|' \
421             ${PATCH_WRKSRC}/tools/clang/tools/clang-format/clang-format.py \
422             ${PATCH_WRKSRC}/tools/clang/tools/clang-format/clang-format-sublime.py \
423             ${PATCH_WRKSRC}/tools/clang/tools/clang-format/git-clang-format
424
425 post-patch-COMPILER_RT-on:
426         cd ${WRKSRC_compiler_rt} && \
427         ${PATCH} -p0 < ${PATCHDIR}/compiler-rt-safestack_platform.h
428
429 post-build-COMPILER_RT-on:
430         ${MKDIR} ${WRKDIR}/compiler-rt-build
431         cd ${WRKDIR}/compiler-rt-build && \
432         ${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} \
433             -DLLVM_CONFIG_PATH=${CONFIGURE_WRKSRC}/bin/llvm-config \
434             ${WRKSRC_compiler_rt} && \
435         ${MAKE_ENV} ${MAKE_CMD}
436
437 post-install:
438         ${INSTALL_SCRIPT} ${WRKDIR}/llvm-wrapper.sh \
439             ${STAGEDIR}${PREFIX}/bin/${FIRST_COMMAND}${LLVM_SUFFIX}
440 .for command in ${COMMANDS:C/^/XXXX/1:NXXXX*}
441         ${LN} -f ${STAGEDIR}${PREFIX}/bin/${FIRST_COMMAND}${LLVM_SUFFIX} \
442             ${STAGEDIR}${PREFIX}/bin/${command}${LLVM_SUFFIX}
443 .endfor
444
445 post-install-DOCS-on:
446         ${MKDIR} ${STAGEDIR}${DOCSDIR}
447         ${MV} ${STAGEDIR}${LLVM_PREFIX}/share/doc/* ${STAGEDIR}${DOCSDIR}
448         ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/doc
449 .for _man in ${MAN1SRCS}
450         ${MV} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/${_man} \
451             ${STAGEDIR}${MANPREFIX}/man/man1/${_man:R}${LLVM_SUFFIX}.1
452 .endfor
453 .if ! ${PORT_OPTIONS:MLIT}
454         ${RM} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/lit.1
455         ${RM} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/FileCheck.1
456 .endif
457         ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/
458         ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/
459
460 .if ${PORT_OPTIONS:MCLANG}
461 post-install-DOCS-off:
462         ${RM} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/scan-build.1
463         ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/
464         ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/
465 .endif
466
467 post-install-CLANG-on:
468         ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/clang \
469             ${STAGEDIR}${LLVM_PREFIX}/bin/clang-cpp
470
471 post-install-COMPILER_RT-on:
472         cd ${WRKDIR}/compiler-rt-build && \
473             ${MAKE_ENV} ${MAKE_CMD} ${INSTALL_TARGET}
474 .if ${ARCH} == "amd64"
475         ${RM} ${STAGEDIR}${LLVM_PREFIX}/lib/freebsd/libclang_rt*i386*
476 .endif
477         ${MKDIR} ${STAGEDIR}${PREFIX}/${_CRTLIBDIR}
478         ${MV} ${STAGEDIR}${LLVM_PREFIX}/lib/freebsd/* \
479             ${STAGEDIR}${PREFIX}/${_CRTLIBDIR}
480         ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/lib/freebsd
481
482 post-install-LIT-on:
483         ${INSTALL_SCRIPT} ${PATCH_WRKSRC}/utils/lit/lit.py \
484             ${STAGEDIR}${LLVM_PREFIX}/bin/lit
485         ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
486             ${STAGEDIR}${LLVM_PREFIX}/bin/llvm-lit
487         ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
488             ${STAGEDIR}${PREFIX}/bin/lit${LLVM_SUFFIX}
489         ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
490             ${STAGEDIR}${PREFIX}/bin/llvm-lit${LLVM_SUFFIX}
491         ${MKDIR} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/lit${LLVM_SUFFIX}
492         ${INSTALL_DATA} ${WRKSRC}/utils/lit/lit/*.py \
493             ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/lit${LLVM_SUFFIX}
494         ${INSTALL_PROGRAM} ${WRKDIR}/.build/bin/FileCheck \
495             ${STAGEDIR}${LLVM_PREFIX}/bin/
496         ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/FileCheck \
497             ${STAGEDIR}${PREFIX}/bin/FileCheck${LLVM_SUFFIX}
498
499 TEST_CMD=       '(cd ${WRKSRC}/test; ${SETENV} ${MAKE_ENV} LD_LIBRARY_PATH=${WRKSRC}/Release/lib ${MAKE_CMD} check-local-lit)'
500 do-test:
501         if [ `${ID} -u` = 0 ]; then \
502                 ${CHOWN} -R nobody ${WRKSRC}/test; \
503                 su -m nobody -c ${TEST_CMD}; \
504         else \
505                 ${SH} -c ${TEST_CMD}; \
506         fi
507
508 build-plist:
509         ${RM} ${PLIST} ${PLIST}.tmp
510         ${ECHO_CMD} "@comment >>>>> GENERATED FILE, DO NOT EDIT <<<<<" >> ${PLIST}.tmp
511         ${ECHO_CMD} "@comment Alter build-plist target and regenerate as required" >> ${PLIST}.tmp
512 .for command in ${COMMANDS}
513         ${ECHO_CMD} bin/${command}${LLVM_SUFFIX} >> ${PLIST}.tmp
514 .endfor
515 .for command in ${LIT_COMMANDS}
516         ${ECHO_CMD} %%LIT%%bin/${command}${LLVM_SUFFIX} >> ${PLIST}.tmp
517         ${ECHO_CMD} %%LIT%%${LLVM_PREFIX:S|${PREFIX}/||}/bin/${command} >> ${PLIST}.tmp
518 .endfor
519         ${FIND} ${STAGEDIR}${LLVM_PREFIX} -type f -o -type l | \
520             ${GREP} -v '_blacklist.txt$$' | \
521             ${GREP} -v '[/-]lit$$' | ${GREP} -v 'FileCheck$$' | \
522             ${GREP} -v man/man1 | ${SED} -e 's|${STAGEDIR}${PREFIX}/||' \
523             -e 's|${PYTHON_SITELIBDIR:C|${PREFIX}/||}|%%PYTHON_SITELIBDIR%%|' \
524             -e 's|${PORTVERSION}|%%PORTVERSION%%|' \
525             -e 's|release.cmake|%%CMAKE_BUILD_TYPE%%.cmake|' \
526             -e 's|${LLVM_RELEASE:C/\./\\./g}|%%LLVM_RELEASE%%|' \
527             -e 's|${LLVM_MAJOR:C/\./\\./}|%%LLVM_MAJOR%%|' \
528             | ${SORT} >> ${PLIST}.tmp
529         ${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR}/lit${LLVM_SUFFIX} -type f | \
530             ${SED} -e 's|${STAGEDIR}${PYTHON_SITELIBDIR}|%%LIT%%%%PYTHON_SITELIBDIR%%|' \
531             -e 's|${LLVM_RELEASE:C/\./\\./g}|%%LLVM_RELEASE%%|' \
532             -e 's|${LLVM_MAJOR:C/\./\\./}|%%LLVM_MAJOR%%|' | \
533             ${SORT} >> ${PLIST}.tmp
534         awk '{ \
535             if ($$0 ~ /${CLANG_PATTERN}/ && $$0 !~ /omp.h|${EXTRAS_PATTERN}|libclang_rt/) {printf "%%%%CLANG%%%%"} \
536             if ($$0 ~ /${COMPILER_RT_PATTERN}/) \
537                 {printf "%%%%COMPILER_RT%%%%"} \
538             if ($$0 ~ /lld|wasm-ld/ && $$0 !~ /lldb/) {printf "%%%%LLD%%%%"} \
539             if ($$0 ~ /(${EXTRAS_PATTERN})/) {printf "%%%%EXTRAS%%%%"} \
540             if ($$0 ~ /(argdumper|lldb|six.py)/) {printf "%%%%LLDB%%%%"} \
541             if ($$0 ~ /(lib[ig]*omp|omp.h|ompt.h)/) {printf "%%%%OPENMP%%%%"} \
542             if ($$0 ~ /LLVMgold/) {printf "%%%%GOLD%%%%"} \
543             if ($$0 !~ /libclang_rt/) {print} \
544         }' ${PLIST}.tmp >> ${PLIST}
545         ${ECHO_CMD} '@postexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi' >> ${PLIST}
546         ${ECHO_CMD} '@postunexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi' >> ${PLIST}
547         ${RM} ${PLIST}.tmp
548
549 check-commands:
550 .for command in ${COMMANDS}
551         test -e ${STAGEDIR}${LLVM_PREFIX}/bin/${command}
552 .endfor
553
554 .include <bsd.port.post.mk>