| @@ -1,153 +1,152 @@ | | | @@ -1,153 +1,152 @@ |
1 | # $NetBSD: Makefile,v 1.80 2022/09/01 01:32:29 gutteridge Exp $ | | 1 | # $NetBSD: Makefile,v 1.81 2022/09/01 01:36:42 gutteridge Exp $ |
2 | # | | 2 | # |
3 | # When updating this, please also update: | | 3 | # When updating this, please also update: |
4 | # devel/include-what-you-use | | 4 | # devel/include-what-you-use |
5 | # devel/lld | | 5 | # devel/lld |
6 | # devel/lldb | | 6 | # devel/lldb |
7 | # devel/polly | | 7 | # devel/polly |
8 | # lang/clang | | 8 | # lang/clang |
9 | # lang/clang-tools-extra | | 9 | # lang/clang-tools-extra |
10 | # lang/compiler-rt | | 10 | # lang/compiler-rt |
11 | # lang/libcxx | | 11 | # lang/libcxx |
12 | # lang/libcxxabi | | 12 | # lang/libcxxabi |
13 | # lang/libunwind | | 13 | # lang/libunwind |
14 | # lang/wasi-compiler-rt | | 14 | # lang/wasi-compiler-rt |
15 | # lang/wasi-libcxx | | 15 | # lang/wasi-libcxx |
16 | # parallel/openmp | | 16 | # parallel/openmp |
17 | # | | 17 | # |
18 | # Do not update: | | 18 | # Do not update: |
19 | # lang/libLLVM | | 19 | # lang/libLLVM |
20 | # because pkgsrc provides multiple versions and lang/libLLVM is | | 20 | # because pkgsrc provides multiple versions and lang/libLLVM is |
21 | # logically libLLVM4. | | 21 | # logically libLLVM4. |
22 | # | | 22 | # |
23 | # Always update all */buildlink3.mk to require the latest stable release | | 23 | # Always update all */buildlink3.mk to require the latest stable release |
24 | # version in BUILDLINK_API_DEPENDS, as there is no backwards compatibility. | | 24 | # version in BUILDLINK_API_DEPENDS, as there is no backwards compatibility. |
25 | | | 25 | |
26 | .include "version.mk" | | 26 | .include "version.mk" |
27 | | | 27 | |
28 | DISTNAME= llvm-${LLVM_VERSION}.src | | 28 | DISTNAME= llvm-${LLVM_VERSION}.src |
29 | PKGNAME= ${DISTNAME:S/.src//} | | 29 | PKGNAME= ${DISTNAME:S/.src//} |
30 | PKGREVISION= 1 | | 30 | PKGREVISION= 1 |
31 | CATEGORIES= lang devel | | 31 | CATEGORIES= lang devel |
32 | | | 32 | |
33 | MAINTAINER= pkgsrc-users@NetBSD.org | | 33 | MAINTAINER= pkgsrc-users@NetBSD.org |
34 | HOMEPAGE= https://llvm.org/ | | 34 | HOMEPAGE= https://llvm.org/ |
35 | COMMENT= Low Level Virtual Machine compiler infrastructure | | 35 | COMMENT= Low Level Virtual Machine compiler infrastructure |
36 | LICENSE= apache-2.0 | | 36 | LICENSE= apache-2.0 |
37 | | | 37 | |
38 | USE_LANGUAGES= c c++14 | | 38 | USE_LANGUAGES= c c++14 |
39 | USE_CMAKE= yes | | 39 | USE_CMAKE= yes |
40 | GCC_REQD+= 7 | | 40 | GCC_REQD+= 7 |
41 | PYTHON_FOR_BUILD_ONLY= yes | | 41 | PYTHON_FOR_BUILD_ONLY= yes |
42 | | | 42 | |
43 | PYTHON_VERSIONS_INCOMPATIBLE= 27 | | 43 | PYTHON_VERSIONS_INCOMPATIBLE= 27 |
44 | | | 44 | |
45 | NOT_FOR_PLATFORM+= *-*-alpha | | 45 | NOT_FOR_PLATFORM+= *-*-alpha |
46 | NOT_FOR_PLATFORM+= *-*-vax | | 46 | NOT_FOR_PLATFORM+= *-*-vax |
47 | | | 47 | |
48 | CONFIGURE_DIRS= build | | 48 | CONFIGURE_DIRS= build |
49 | CMAKE_ARG_PATH= ${WRKSRC} | | 49 | CMAKE_ARG_PATH= ${WRKSRC} |
50 | | | 50 | |
51 | CMAKE_ARGS+= -DCMAKE_BUILD_TYPE=Release | | 51 | CMAKE_ARGS+= -DCMAKE_BUILD_TYPE=Release |
52 | CMAKE_ARGS+= -DCMAKE_C_COMPILER=${CC:Q} | | 52 | CMAKE_ARGS+= -DCMAKE_C_COMPILER=${CC:Q} |
53 | CMAKE_ARGS+= -DCMAKE_CXX_COMPILER=${CXX:Q} | | 53 | CMAKE_ARGS+= -DCMAKE_CXX_COMPILER=${CXX:Q} |
54 | CMAKE_ARGS+= -DCMAKE_CXX_LINK_FLAGS=${LDFLAGS:Q} | | 54 | CMAKE_ARGS+= -DCMAKE_CXX_LINK_FLAGS=${LDFLAGS:Q} |
55 | CMAKE_ARGS+= -DLLVM_BUILD_LLVM_DYLIB=ON | | 55 | CMAKE_ARGS+= -DLLVM_BUILD_LLVM_DYLIB=ON |
56 | CMAKE_ARGS+= -DLLVM_INCLUDE_BENCHMARKS=OFF | | 56 | CMAKE_ARGS+= -DLLVM_INCLUDE_BENCHMARKS=OFF |
57 | CMAKE_ARGS+= -DLLVM_INSTALL_UTILS=ON | | 57 | CMAKE_ARGS+= -DLLVM_INSTALL_UTILS=ON |
58 | CMAKE_ARGS+= -DLLVM_LINK_LLVM_DYLIB=ON | | 58 | CMAKE_ARGS+= -DLLVM_LINK_LLVM_DYLIB=ON |
59 | CMAKE_ARGS+= -DLLVM_ENABLE_RTTI=ON | | 59 | CMAKE_ARGS+= -DLLVM_ENABLE_RTTI=ON |
60 | | | 60 | |
61 | CMAKE_ARGS.Darwin+= -DCMAKE_LIBTOOL=/usr/bin/libtool | | 61 | CMAKE_ARGS.Darwin+= -DCMAKE_LIBTOOL=/usr/bin/libtool |
62 | | | 62 | |
63 | CHECK_PORTABILITY_SKIP= utils/buildit/build_llvm | | 63 | CHECK_PORTABILITY_SKIP= utils/buildit/build_llvm |
64 | | | 64 | |
65 | # XXX perl is not added as a tool as it does not seem to be required | | 65 | # XXX perl is not added as a tool as it does not seem to be required |
66 | REPLACE_PERL+= utils/*.pl | | 66 | REPLACE_PERL+= utils/*.pl |
67 | REPLACE_PERL+= utils/codegen-diff | | 67 | REPLACE_PERL+= utils/codegen-diff |
68 | REPLACE_PERL+= utils/llvm-native-gxx | | 68 | REPLACE_PERL+= utils/llvm-native-gxx |
69 | | | 69 | |
70 | REPLACE_PYTHON+= tools/opt-viewer/*.py | | 70 | REPLACE_PYTHON+= tools/opt-viewer/*.py |
71 | REPLACE_PYTHON+= tools/sancov/*.py | | 71 | REPLACE_PYTHON+= tools/sancov/*.py |
72 | REPLACE_PYTHON+= utils/*.py | | 72 | REPLACE_PYTHON+= utils/*.py |
73 | REPLACE_PYTHON+= utils/Misc/zkill | | 73 | REPLACE_PYTHON+= utils/Misc/zkill |
74 | REPLACE_PYTHON+= utils/bisect | | 74 | REPLACE_PYTHON+= utils/bisect |
75 | REPLACE_PYTHON+= utils/clang-parse-diagnostics-file | | 75 | REPLACE_PYTHON+= utils/clang-parse-diagnostics-file |
76 | REPLACE_PYTHON+= utils/lit/tests/Inputs/googletest-format/DummySubDir/OneTest.py | | 76 | REPLACE_PYTHON+= utils/lit/tests/Inputs/googletest-format/DummySubDir/OneTest.py |
77 | REPLACE_PYTHON+= utils/llvm-build/llvm-build | | 77 | REPLACE_PYTHON+= utils/llvm-build/llvm-build |
78 | REPLACE_PYTHON+= utils/llvm-compilers-check | | 78 | REPLACE_PYTHON+= utils/llvm-compilers-check |
79 | REPLACE_PYTHON+= utils/llvm-lit/llvm-lit.in | | 79 | REPLACE_PYTHON+= utils/llvm-lit/llvm-lit.in |
80 | | | 80 | |
81 | TEST_TARGET= check | | 81 | TEST_TARGET= check |
82 | TEST_ENV+= LD_LIBRARY_PATH=${WRKDIR}/build/lib | | 82 | TEST_ENV+= LD_LIBRARY_PATH=${WRKDIR}/build/lib |
83 | | | 83 | |
84 | # It may be that the Solaris linker is more strict here and they can be removed on | | 84 | # It may be that the Solaris linker is more strict here and they can be removed on |
85 | # all platforms. Change this to a patch if verified. | | 85 | # all platforms. Change this to a patch if verified. |
86 | SUBST_CLASSES.SunOS+= linkmap | | 86 | SUBST_CLASSES.SunOS+= linkmap |
87 | SUBST_STAGE.linkmap= pre-configure | | 87 | SUBST_STAGE.linkmap= pre-configure |
88 | SUBST_FILES.linkmap= tools/lto/lto.exports | | 88 | SUBST_FILES.linkmap= tools/lto/lto.exports |
89 | SUBST_FILES.linkmap+= tools/remarks-shlib/Remarks.exports | | 89 | SUBST_FILES.linkmap+= tools/remarks-shlib/Remarks.exports |
90 | SUBST_SED.linkmap= -e '/^LLVM/d' | | 90 | SUBST_SED.linkmap= -e '/^LLVM/d' |
91 | | | 91 | |
92 | LDFLAGS.SunOS+= -lsocket -lnsl | | 92 | LDFLAGS.SunOS+= -lsocket -lnsl |
93 | | | 93 | |
94 | .include "../../mk/bsd.prefs.mk" | | 94 | .include "../../mk/bsd.prefs.mk" |
95 | | | 95 | |
96 | PLIST_VARS+= notdylib | | 96 | PLIST_VARS+= notdylib |
97 | .if ${SHLIB_TYPE} == "dylib" | | 97 | .if ${SHLIB_TYPE} == "dylib" |
98 | SOEXT= dylib | | 98 | SOEXT= dylib |
99 | .else | | 99 | .else |
100 | SOEXT= so | | 100 | SOEXT= so |
101 | PLIST.notdylib= yes | | 101 | PLIST.notdylib= yes |
102 | .endif | | 102 | .endif |
103 | PLIST_SUBST+= SOEXT=${SOEXT} | | 103 | PLIST_SUBST+= SOEXT=${SOEXT} |
104 | PLIST_SUBST+= LLVM_MAJOR_VERSION=${LLVM_MAJOR_VERSION} | | 104 | PLIST_SUBST+= LLVM_MAJOR_VERSION=${LLVM_MAJOR_VERSION} |
105 | | | 105 | |
106 | NOTDYLIBS= LTO Remarks | | 106 | NOTDYLIBS= LTO Remarks |
107 | .for libname in ${NOTDYLIBS} | | 107 | .for libname in ${NOTDYLIBS} |
108 | PRINT_PLIST_AWK+= /lib${libname}.${SOEXT}.${LLVM_MAJOR_VERSION}/ { gsub(/\.${SOEXT}\.${LLVM_MAJOR_VERSION}/, ".$${SOEXT}.$${LLVM_MAJOR_VERSION}"); print "$${PLIST.notdylib}" $$0; next } | | 108 | PRINT_PLIST_AWK+= /lib${libname}.${SOEXT}.${LLVM_MAJOR_VERSION}/ { gsub(/\.${SOEXT}\.${LLVM_MAJOR_VERSION}/, ".$${SOEXT}.$${LLVM_MAJOR_VERSION}"); print "$${PLIST.notdylib}" $$0; next } |
109 | .endfor | | 109 | .endfor |
110 | PRINT_PLIST_AWK+= { gsub(/\.${SOEXT}/, ".$${SOEXT}") } | | 110 | PRINT_PLIST_AWK+= { gsub(/\.${SOEXT}/, ".$${SOEXT}") } |
111 | | | 111 | |
112 | # needs std::atomic with 64-bit CAS | | 112 | # needs std::atomic with 64-bit CAS |
113 | .if ${MACHINE_ARCH} == "i386" | | 113 | .if ${MACHINE_ARCH} == "i386" |
114 | CXXFLAGS+= -march=i586 | | 114 | CXXFLAGS+= -march=i586 |
115 | .endif | | 115 | .endif |
116 | | | 116 | |
117 | .if ${MACHINE_ARCH:Mpowerpc*} | | 117 | .if ${MACHINE_ARCH:Mpowerpc*} |
118 | # Needed to avoid "relocation truncated to fit: R_PPC_REL24" | | 118 | # Needed to avoid "relocation truncated to fit: R_PPC_REL24" |
119 | CFLAGS+= -mlongcall | | 119 | CFLAGS+= -mlongcall |
120 | CXXFLAGS+= -mlongcall | | 120 | CXXFLAGS+= -mlongcall |
121 | . if ${OPSYS} == "NetBSD" && ${OPSYS_VERSION} >= 099917 | | 121 | . if ${OPSYS} == "NetBSD" && ${OPSYS_VERSION} >= 099917 |
122 | # The -mno-pltseq option is not available in gcc7, but is needed for | | 122 | # The -mno-pltseq option is not available in gcc7, but is needed for |
123 | # the above-mentioned relocation truncation issue in newer GCC | | 123 | # the above-mentioned relocation truncation issue in newer GCC |
124 | CFLAGS+= -mno-pltseq | | 124 | CFLAGS+= -mno-pltseq |
125 | CXXFLAGS+= -mno-pltseq | | 125 | CXXFLAGS+= -mno-pltseq |
126 | . endif | | | |
127 | . else # Not NetBSD | | 126 | . else # Not NetBSD |
128 | # Let's just insist on newer gcc -- untested. | | 127 | # Let's just insist on newer gcc -- untested. |
129 | CFLAGS+= -mno-pltseq | | 128 | CFLAGS+= -mno-pltseq |
130 | CXXFLAGS+= -mno-pltseq | | 129 | CXXFLAGS+= -mno-pltseq |
131 | . endif | | 130 | . endif |
132 | .endif | | 131 | .endif |
133 | | | 132 | |
134 | .if ${OPSYS} == "NetBSD" | | 133 | .if ${OPSYS} == "NetBSD" |
135 | CMAKE_ARGS+= -DPKGSRC_LLVM_PTHREADLIB=-lpthread | | 134 | CMAKE_ARGS+= -DPKGSRC_LLVM_PTHREADLIB=-lpthread |
136 | .endif | | 135 | .endif |
137 | | | 136 | |
138 | .include "options.mk" | | 137 | .include "options.mk" |
139 | | | 138 | |
140 | # replacing config.guess is required even for cmake. | | 139 | # replacing config.guess is required even for cmake. |
141 | # It is used to detect correct LLVM_HOST_TRIPLE, e.g. for NetBSD/evbarm. | | 140 | # It is used to detect correct LLVM_HOST_TRIPLE, e.g. for NetBSD/evbarm. |
142 | post-extract: | | 141 | post-extract: |
143 | ${MKDIR} ${WRKSRC}/build | | 142 | ${MKDIR} ${WRKSRC}/build |
144 | .for f in config.guess config.sub | | 143 | .for f in config.guess config.sub |
145 | cp ../../mk/gnu-config/${f} ${WRKSRC}/cmake/${f} | | 144 | cp ../../mk/gnu-config/${f} ${WRKSRC}/cmake/${f} |
146 | .endfor | | 145 | .endfor |
147 | | | 146 | |
148 | .include "../../devel/zlib/buildlink3.mk" | | 147 | .include "../../devel/zlib/buildlink3.mk" |
149 | .include "../../lang/python/application.mk" | | 148 | .include "../../lang/python/application.mk" |
150 | .include "../../lang/python/tool.mk" | | 149 | .include "../../lang/python/tool.mk" |
151 | .include "../../textproc/libxml2/buildlink3.mk" | | 150 | .include "../../textproc/libxml2/buildlink3.mk" |
152 | .include "../../mk/atomic64.mk" | | 151 | .include "../../mk/atomic64.mk" |
153 | .include "../../mk/bsd.pkg.mk" | | 152 | .include "../../mk/bsd.pkg.mk" |