Makefile revision 1.1
1# $NetBSD: Makefile,v 1.1 2019/11/11 22:45:02 joerg Exp $ 2 3.include <bsd.init.mk> 4 5.if ${MKLLVM} != "no" 6.PATH: ${CLANG_SRCDIR}/lib/Headers 7 8.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" 9INCS= adxintrin.h \ 10 ammintrin.h \ 11 avx2intrin.h \ 12 avx512bf16intrin.h \ 13 avx512vlbf16intrin.h \ 14 avx512vlvp2intersectintrin.h \ 15 avx512vp2intersectintrin.h \ 16 enqcmdintrin.h \ 17 avx512bitalgintrin.h \ 18 avx512bwintrin.h \ 19 avx512cdintrin.h \ 20 avx512dqintrin.h \ 21 avx512erintrin.h \ 22 avx512fintrin.h \ 23 avx512ifmaintrin.h \ 24 avx512ifmavlintrin.h \ 25 avx512pfintrin.h \ 26 avx512vbmi2intrin.h \ 27 avx512vbmiintrin.h \ 28 avx512vbmivlintrin.h \ 29 avx512vlbitalgintrin.h \ 30 avx512vlbwintrin.h \ 31 avx512vlcdintrin.h \ 32 avx512vldqintrin.h \ 33 avx512vlintrin.h \ 34 avx512vlvbmi2intrin.h \ 35 avx512vlvnniintrin.h \ 36 avx512vnniintrin.h \ 37 avx512vpopcntdqintrin.h \ 38 avx512vpopcntdqvlintrin.h \ 39 avxintrin.h \ 40 bmi2intrin.h \ 41 bmiintrin.h \ 42 cetintrin.h \ 43 cldemoteintrin.h \ 44 clflushoptintrin.h \ 45 clwbintrin.h \ 46 clzerointrin.h \ 47 cpuid.h \ 48 emmintrin.h \ 49 f16cintrin.h \ 50 fma4intrin.h \ 51 fmaintrin.h \ 52 fxsrintrin.h \ 53 gfniintrin.h \ 54 ia32intrin.h \ 55 immintrin.h \ 56 invpcidintrin.h \ 57 lwpintrin.h \ 58 lzcntintrin.h \ 59 mm3dnow.h \ 60 mmintrin.h \ 61 mm_malloc.h \ 62 movdirintrin.h \ 63 mwaitxintrin.h \ 64 nmmintrin.h \ 65 pconfigintrin.h \ 66 pkuintrin.h \ 67 pmmintrin.h \ 68 popcntintrin.h \ 69 prfchwintrin.h \ 70 ptwriteintrin.h \ 71 rdseedintrin.h \ 72 rtmintrin.h \ 73 sgxintrin.h \ 74 shaintrin.h \ 75 smmintrin.h \ 76 tbmintrin.h \ 77 tmmintrin.h \ 78 vaesintrin.h \ 79 vpclmulqdqintrin.h \ 80 waitpkgintrin.h \ 81 wbnoinvdintrin.h \ 82 wmmintrin.h \ 83 __wmmintrin_aes.h \ 84 __wmmintrin_pclmul.h \ 85 x86intrin.h \ 86 xmmintrin.h \ 87 xopintrin.h \ 88 xsavecintrin.h \ 89 xsaveintrin.h \ 90 xsaveoptintrin.h \ 91 xsavesintrin.h \ 92 xtestintrin.h 93 94.elif ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64" 95INCS= altivec.h \ 96 htmintrin.h \ 97 htmxlintrin.h 98.elif ${MACHINE_CPU} == "arm" || ${MACHINE_CPU} == "aarch64" 99INCS= arm_acle.h \ 100 arm_neon.h 101. if ${MACHINE_CPU} == "aarch64" 102INCS+= arm64intr.h 103. endif 104.elif ${MACHINE_CPU} == "mips" || ${MACHINE_CPU} == "mips64" 105INCS= msa.h 106.endif 107INCS+= stdatomic.h 108INCSDIR= /usr/include/clang-${CLANG_VERSION:R} 109.endif # MKLLVM 110 111.PATH: ${LLVM_SRCDIR}/include/llvm/IR \ 112 113TABLEGEN_SRC= Attributes.td Intrinsics.td Options.td 114 115TABLEGEN_OUTPUT.Attributes.td= \ 116 llvm/IR/Attributes.inc|-gen-attrs 117 118TABLEGEN_OUTPUT.Intrinsics.td= \ 119 llvm/IR/IntrinsicEnums.inc|-gen-intrinsic-enums \ 120 llvm/IR/IntrinsicImpl.inc|-gen-intrinsic-impl 121 122.if ${MKLLVM} != "no" 123.PATH: ${CLANG_SRCDIR}/include/clang/AST \ 124 ${CLANG_SRCDIR}/include/clang/Basic \ 125 ${CLANG_SRCDIR}/include/clang/Driver \ 126 ${CLANG_SRCDIR}/include/clang/StaticAnalyzer/Checkers 127CLANG_TABLEGEN_SRC= \ 128 arm_fp16.td \ 129 arm_neon.td \ 130 arm_mve.td \ 131 Attr.td \ 132 Checkers.td \ 133 CommentCommands.td \ 134 CommentHTMLNamedCharacterReferences.td \ 135 CommentHTMLTags.td \ 136 CommentNodes.td \ 137 DeclNodes.td \ 138 Diagnostic.td \ 139 StmtDataCollectors.td \ 140 StmtNodes.td \ 141 TypeNodes.td 142 143CLANG_TABLEGEN_INCLUDES.Attr.td= -I${CLANG_SRCDIR}/include 144CLANG_TABLEGEN_OUTPUT.Attr.td= \ 145 clang/AST/AttrImpl.inc|-gen-clang-attr-impl \ 146 clang/AST/AttrNodeTraverse.inc|-gen-clang-attr-node-traverse \ 147 clang/AST/AttrTextNodeDump.inc|-gen-clang-attr-text-node-dump \ 148 clang/AST/Attrs.inc|-gen-clang-attr-classes \ 149 clang/AST/AttrVisitor.inc|-gen-clang-attr-ast-visitor \ 150 clang/Basic/AttrHasAttributeImpl.inc|-gen-clang-attr-has-attribute-impl \ 151 clang/Basic/AttrList.inc|-gen-clang-attr-list \ 152 clang/Basic/AttrSubMatchRulesList.inc|-gen-clang-attr-subject-match-rule-list \ 153 clang/Parse/AttrParserStringSwitches.inc|-gen-clang-attr-parser-string-switches \ 154 clang/Parse/AttrSubMatchRulesParserStringSwitches.inc|-gen-clang-attr-subject-match-rules-parser-string-switches \ 155 clang/Sema/AttrParsedAttrImpl.inc|-gen-clang-attr-parsed-attr-impl \ 156 clang/Sema/AttrParsedAttrKinds.inc|-gen-clang-attr-parsed-attr-kinds \ 157 clang/Sema/AttrParsedAttrList.inc|-gen-clang-attr-parsed-attr-list \ 158 clang/Sema/AttrSpellingListIndex.inc|-gen-clang-attr-spelling-index \ 159 clang/Sema/AttrTemplateInstantiate.inc|-gen-clang-attr-template-instantiate \ 160 clang/Serialization/AttrPCHRead.inc|-gen-clang-attr-pch-read \ 161 clang/Serialization/AttrPCHWrite.inc|-gen-clang-attr-pch-write 162 163CLANG_TABLEGEN_OUTPUT.StmtNodes.td= \ 164 clang/AST/StmtNodes.inc|-gen-clang-stmt-nodes 165 166CLANG_TABLEGEN_OUTPUT.StmtDataCollectors.td= \ 167 clang/AST/StmtDataCollectors.inc|-gen-clang-data-collectors 168 169CLANG_TABLEGEN_OUTPUT.DeclNodes.td= \ 170 clang/AST/DeclNodes.inc|-gen-clang-decl-nodes 171 172CLANG_TABLEGEN_OUTPUT.CommentNodes.td= \ 173 clang/AST/CommentNodes.inc|-gen-clang-comment-nodes 174 175CLANG_TABLEGEN_OUTPUT.CommentCommands.td= \ 176 clang/AST/CommentCommandInfo.inc|-gen-clang-comment-command-info \ 177 clang/AST/CommentCommandList.inc|-gen-clang-comment-command-list 178 179CLANG_TABLEGEN_OUTPUT.CommentHTMLTags.td= \ 180 clang/AST/CommentHTMLTags.inc|-gen-clang-comment-html-tags \ 181 clang/AST/CommentHTMLTagsProperties.inc|-gen-clang-comment-html-tags-properties 182 183CLANG_TABLEGEN_OUTPUT.CommentHTMLNamedCharacterReferences.td= \ 184 clang/AST/CommentHTMLNamedCharacterReferences.inc|-gen-clang-comment-html-named-character-references 185 186CLANG_TABLEGEN_OUTPUT.TypeNodes.td= \ 187 clang/AST/TypeNodes.inc|-gen-clang-type-nodes 188 189CLANG_TABLEGEN_INCLUDES.Diagnostic.td= -I${CLANG_SRCDIR}/include/clang/Basic 190CLANG_TABLEGEN_OUTPUT.Diagnostic.td= \ 191 clang/Basic/DiagnosticAnalysisKinds.inc|-gen-clang-diags-defs^-clang-component=Analysis \ 192 clang/Basic/DiagnosticASTKinds.inc|-gen-clang-diags-defs^-clang-component=AST \ 193 clang/Basic/DiagnosticCommentKinds.inc|-gen-clang-diags-defs^-clang-component=Comment \ 194 clang/Basic/DiagnosticCommonKinds.inc|-gen-clang-diags-defs^-clang-component=Common \ 195 clang/Basic/DiagnosticCrossTUKinds.inc|-gen-clang-diags-defs^-clang-component=CrossTU \ 196 clang/Basic/DiagnosticDriverKinds.inc|-gen-clang-diags-defs^-clang-component=Driver \ 197 clang/Basic/DiagnosticFrontendKinds.inc|-gen-clang-diags-defs^-clang-component=Frontend \ 198 clang/Basic/DiagnosticGroups.inc|-gen-clang-diag-groups \ 199 clang/Basic/DiagnosticIndexName.inc|-gen-clang-diags-index-name \ 200 clang/Basic/DiagnosticLexKinds.inc|-gen-clang-diags-defs^-clang-component=Lex \ 201 clang/Basic/DiagnosticParseKinds.inc|-gen-clang-diags-defs^-clang-component=Parse \ 202 clang/Basic/DiagnosticRefactoringKinds.inc|-gen-clang-diags-defs^-clang-component=Refactoring \ 203 clang/Basic/DiagnosticSemaKinds.inc|-gen-clang-diags-defs^-clang-component=Sema \ 204 clang/Basic/DiagnosticSerializationKinds.inc|-gen-clang-diags-defs^-clang-component=Serialization 205 206 207CLANG_TABLEGEN_INCLUDES.arm_neon.td= -I${CLANG_SRCDIR}/include/clang/Basic 208CLANG_TABLEGEN_OUTPUT.arm_neon.td= \ 209 clang/Basic/arm_neon.inc|-gen-arm-neon-sema \ 210 arm_neon.h|-gen-arm-neon 211 212CLANG_TABLEGEN_INCLUDES.arm_fp16.td= -I${CLANG_SRCDIR}/include/clang/Basic 213CLANG_TABLEGEN_OUTPUT.arm_fp16.td= \ 214 clang/Basic/arm_fp16.inc|-gen-arm-neon-sema 215CLANG_TABLEGEN_INCLUDES.arm_mve.td= -I${CLANG_SRCDIR}/include/clang/Basic 216CLANG_TABLEGEN_OUTPUT.arm_mve.td= \ 217 clang/Basic/arm_mve_builtins.inc|-gen-arm-mve-builtin-def \ 218 clang/Basic/arm_mve_builtin_aliases.inc|-gen-arm-mve-builtin-aliases \ 219 clang/Basic/arm_mve_builtin_cg.inc|-gen-arm-mve-builtin-codegen \ 220 clang/Basic/arm_mve_builtin_sema.inc|-gen-arm-mve-builtin-sema \ 221 222CLANG_TABLEGEN_INCLUDES.Checkers.td= \ 223 -I${CLANG_SRCDIR}/include \ 224 -I${CLANG_SRCDIR}/include/clang/StaticAnalyzer/Checkers 225CLANG_TABLEGEN_OUTPUT.Checkers.td= \ 226 clang/StaticAnalyzer/Checkers/Checkers.inc|-gen-clang-sa-checkers 227 228TABLEGEN_INCLUDES.Options.td= -I${CLANG_SRCDIR}/include/clang/Driver 229TABLEGEN_OUTPUT.Options.td= \ 230 clang/Driver/Options.inc|-gen-opt-parser-defs 231.endif # MKLLVM 232 233.include "${.PARSEDIR}/../tablegen.mk" 234 235DPSRCS+= llvm/Support/VCSRevision.h 236DPSRC+= llvm/Support/VCSRevision.h 237 238llvm/Support/VCSRevision.h: ${LLVM_TOPLEVEL}/Makefile.inc 239 mkdir -p ${.TARGET:H} 240 printf '#define LLVM_REVISION "git-${LLVM_REVISION}"\n' >> ${.TARGET}.tmp 241 mv ${.TARGET}.tmp ${.TARGET} 242 243.if ${MKLLVM} != "no" 244DPSRCS+= clang/Basic/Version.inc 245CLEANFILES+= clang/Basic/Version.inc 246 247clang/Basic/Version.inc: ${LLVM_TOPLEVEL}/Makefile.inc 248 mkdir -p ${.TARGET:H} 249 printf '#define CLANG_VERSION ${CLANG_VERSION}\n' > ${.TARGET}.tmp 250 printf '#define CLANG_VERSION_STRING "${CLANG_VERSION}"\n' >> ${.TARGET}.tmp 251 printf '#define CLANG_VERSION_MAJOR ${CLANG_VERSION:R:R}\n' >> ${.TARGET}.tmp 252 printf '#define CLANG_VERSION_MINOR ${CLANG_VERSION:R:E}\n' >> ${.TARGET}.tmp 253 printf '#define CLANG_VERSION_PATCHLEVEL ${CLANG_VERSION:R:R}\n' >> ${.TARGET}.tmp 254 mv ${.TARGET}.tmp ${.TARGET} 255.endif # MKLLVM 256 257.ifndef HOST_BUILD 258 259DPSRCS+= llvm/Config/config.h llvm/Config/llvm-config.h 260CLEANFILES+= llvm/Config/config.h llvm/Config/llvm-config.h 261 262NATIVE_LIBS= -lm -lexecinfo 263 264.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" 265NATIVE_LLVM_ARCH= X86 266.endif 267 268.if ${MACHINE_ARCH} == "aarch64" || ${MACHINE_ARCH} == "aarch64eb" 269NATIVE_LLVM_ARCH= AArch64 270.endif 271 272.if !empty(MACHINE_ARCH:Mearm*) || !empty(MACHINE_ARCH:Marm*) 273NATIVE_LLVM_ARCH= ARM 274.endif 275 276.if !empty(MACHINE_ARCH:Mmips*) 277NATIVE_LLVM_ARCH= Mips 278.endif 279 280.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64" 281NATIVE_LLVM_ARCH= PowerPC 282.endif 283 284.if ${MACHINE_ARCH} == "sparc" || ${MACHINE_ARCH} == "sparc64" 285NATIVE_LLVM_ARCH= Sparc 286.endif 287 288.if defined(NATIVE_LLVM_ARCH) 289NATIVE_LLVM_ASMPARSER= LLVMInitialize${NATIVE_LLVM_ARCH}AsmParser 290NATIVE_LLVM_ASMPRINTER= LLVMInitialize${NATIVE_LLVM_ARCH}AsmPrinter 291NATIVE_LLVM_DISASSEMBLER= LLVMInitialize${NATIVE_LLVM_ARCH}Disassembler 292NATIVE_LLVM_TARGET= LLVMInitialize${NATIVE_LLVM_ARCH}Target 293NATIVE_LLVM_TARGETINFO= LLVMInitialize${NATIVE_LLVM_ARCH}TargetInfo 294NATIVE_LLVM_TARGETMC= LLVMInitialize${NATIVE_LLVM_ARCH}TargetMC 295.endif 296 297llvm/Config/config.h: ${LLVM_TOPLEVEL}/Makefile.inc ${LLVM_TOPLEVEL}/config/llvm/Config/config.h.in 298 mkdir -p ${.TARGET:H} 299 ${TOOL_SED} -e /LLVM_DEFAULT_TARGET_TRIPLE/d \ 300 -e /LLVM_HOST_TRIPLE/d \ 301 -e /LLVM_NATIVE_/d \ 302 -e /LLVM_VERSION_/d \ 303 -e /PACKAGE_VERSION/d -e 'x' \ 304 < ${LLVM_TOPLEVEL}/config/llvm/Config/config.h.in \ 305 > ${.TARGET}.tmp 306 printf '#define LLVM_DEFAULT_TARGET_TRIPLE "${MACHINE_GNU_PLATFORM}"\n' >> ${.TARGET}.tmp 307 printf '#define LLVM_HOST_TRIPLE "${MACHINE_GNU_PLATFORM}"\n' >> ${.TARGET}.tmp 308.if defined(NATIVE_LLVM_ARCH) 309 printf '#define LLVM_NATIVE_ARCH ${NATIVE_LLVM_ARCH}\n' >> ${.TARGET}.tmp 310 printf '#define LLVM_NATIVE_ASMPARSER ${NATIVE_LLVM_ASMPARSER}\n' >> ${.TARGET}.tmp 311 printf '#define LLVM_NATIVE_ASMPRINTER ${NATIVE_LLVM_ASMPRINTER}\n' >> ${.TARGET}.tmp 312 printf '#define LLVM_NATIVE_DISASSEMBLER ${NATIVE_LLVM_DISASSEMBLER}\n' >> ${.TARGET}.tmp 313 printf '#define LLVM_NATIVE_TARGET ${NATIVE_LLVM_TARGET}\n' >> ${.TARGET}.tmp 314 printf '#define LLVM_NATIVE_TARGETINFO ${NATIVE_LLVM_TARGETINFO}\n' >> ${.TARGET}.tmp 315 printf '#define LLVM_NATIVE_TARGETMC ${NATIVE_LLVM_TARGETMC}\n' >> ${.TARGET}.tmp 316.endif 317 printf '#define PACKAGE_VERSION "${LLVM_VERSION} (trunk ${LLVM_REVISION})"\n' >> ${.TARGET}.tmp 318 printf '#define LLVM_VERSION_MAJOR ${LLVM_VERSION:R:R}\n' >> ${.TARGET}.tmp 319 printf '#define LLVM_VERSION_MINOR ${LLVM_VERSION:R:E}\n' >> ${.TARGET}.tmp 320 printf '#define LLVM_VERSION_PATCH ${LLVM_VERSION:E}\n' >> ${.TARGET}.tmp 321 printf '#define LLVM_VERSION_STRING "${LLVM_VERSION}"\n' >> ${.TARGET}.tmp 322 printf '#endif\n' >> ${.TARGET}.tmp 323 mv ${.TARGET}.tmp ${.TARGET} 324 325llvm/Config/llvm-config.h: ${LLVM_TOPLEVEL}/Makefile.inc ${LLVM_TOPLEVEL}/config/llvm/Config/llvm-config.h.in 326 mkdir -p ${.TARGET:H} 327 ${TOOL_SED} -e /LLVM_DEFAULT_TARGET_TRIPLE/d \ 328 -e /LLVM_HOST_TRIPLE/d \ 329 -e /LLVM_NATIVE_/d \ 330 -e /LLVM_VERSION_/d \ 331 -e /PACKAGE_VERSION/d -e 'x' \ 332 < ${LLVM_TOPLEVEL}/config/llvm/Config/llvm-config.h.in \ 333 > ${.TARGET}.tmp 334 printf '#define LLVM_DEFAULT_TARGET_TRIPLE "${MACHINE_GNU_PLATFORM}"\n' >> ${.TARGET}.tmp 335 printf '#define LLVM_HOST_TRIPLE "${MACHINE_GNU_PLATFORM}"\n' >> ${.TARGET}.tmp 336.if defined(NATIVE_LLVM_ARCH) 337 printf '#define LLVM_NATIVE_ARCH ${NATIVE_LLVM_ARCH}\n' >> ${.TARGET}.tmp 338 printf '#define LLVM_NATIVE_ASMPARSER ${NATIVE_LLVM_ASMPARSER}\n' >> ${.TARGET}.tmp 339 printf '#define LLVM_NATIVE_ASMPRINTER ${NATIVE_LLVM_ASMPRINTER}\n' >> ${.TARGET}.tmp 340 printf '#define LLVM_NATIVE_DISASSEMBLER ${NATIVE_LLVM_DISASSEMBLER}\n' >> ${.TARGET}.tmp 341 printf '#define LLVM_NATIVE_TARGET ${NATIVE_LLVM_TARGET}\n' >> ${.TARGET}.tmp 342 printf '#define LLVM_NATIVE_TARGETINFO ${NATIVE_LLVM_TARGETINFO}\n' >> ${.TARGET}.tmp 343 printf '#define LLVM_NATIVE_TARGETMC ${NATIVE_LLVM_TARGETMC}\n' >> ${.TARGET}.tmp 344.endif 345 printf '#define LLVM_VERSION_MAJOR ${LLVM_VERSION:R:R}\n' >> ${.TARGET}.tmp 346 printf '#define LLVM_VERSION_MINOR ${LLVM_VERSION:R:E}\n' >> ${.TARGET}.tmp 347 printf '#define LLVM_VERSION_PATCH ${LLVM_VERSION:E}\n' >> ${.TARGET}.tmp 348 printf '#define LLVM_VERSION_STRING "${LLVM_VERSION}"\n' >> ${.TARGET}.tmp 349 printf '#endif\n' >> ${.TARGET}.tmp 350 mv ${.TARGET}.tmp ${.TARGET} 351 352run-configure: 353 [ ! -d tmp ] || rm -r tmp 354 mkdir -p tmp 355 cd tmp && CONFIG_SITE= ${CONFIG_DIR}/configure ${LLVM_CONFIGURE_ARGS} \ 356 CC=${CC:Q} CFLAGS=${CFLAGS:N-Werror:Q} CXX=${CXX:Q} CXXFLAGS=${CXXFLAGS:N-Werror:Q} \ 357 CPPFLAGS=${CPPFLAGS:N-std=c++11:Q} LDFLAGS=${LDFLAGS:Q} LD=${LD:Q} LIBS=${NATIVE_LIBS:Q} \ 358 BUILD_CC=${CC:Q} BUILD_CXX=${CXX:Q} 359 cp -r tmp/include/llvm/* ${LLVM_INCLUDE_CONFIG}/llvm/ 360 mv ${LLVM_INCLUDE_CONFIG}/llvm/Config/llvm-config.h \ 361 ${LLVM_INCLUDE_CONFIG}/llvm/Config/llvm-config.h.in 362 cp -r tmp/include/clang/* ${CLANG_INCLUDE_CONFIG}/clang/ 363 rm -r tmp 364 mv ${LLVM_INCLUDE_CONFIG}/llvm/Config/config.h \ 365 ${LLVM_INCLUDE_CONFIG}/llvm/Config/config.h.in 366.endif 367 368includes depend dependall all: ${DPSRCS} 369 370.include <bsd.prog.mk> 371