xref: /freebsd/lib/clang/clang.build.mk (revision 9ecd54f24fe9fa373e07c9fd7c052deb2188f545)
1# $FreeBSD$
2
3CLANG_SRCS=	${LLVM_SRCS}/tools/clang
4
5CFLAGS+=	-I${LLVM_SRCS}/include -I${CLANG_SRCS}/include \
6		-I${LLVM_SRCS}/${SRCDIR} ${INCDIR:C/^/-I${LLVM_SRCS}\//} -I. \
7		-I${LLVM_SRCS}/../../lib/clang/include \
8		-DLLVM_ON_UNIX -DLLVM_ON_FREEBSD \
9		-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS #-DNDEBUG
10
11.if !defined(EARLY_BUILD) && defined(MK_CLANG_FULL) && ${MK_CLANG_FULL} != "no"
12CFLAGS+=	-DCLANG_ENABLE_ARCMT \
13		-DCLANG_ENABLE_REWRITER \
14		-DCLANG_ENABLE_STATIC_ANALYZER
15.endif # !EARLY_BUILD && MK_CLANG_FULL
16
17# LLVM is not strict aliasing safe as of 12/31/2011
18CFLAGS+=	-fno-strict-aliasing
19
20TARGET_ARCH?=	${MACHINE_ARCH}
21BUILD_ARCH?=	${MACHINE_ARCH}
22
23.if (${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "armv6") && \
24    ${MK_ARM_EABI} != "no"
25TARGET_ABI=	gnueabi
26.elif ${TARGET_ARCH} == "armv6hf"
27TARGET_ABI=	gnueabihf
28.else
29TARGET_ABI=	unknown
30.endif
31
32TARGET_TRIPLE?=	${TARGET_ARCH:C/amd64/x86_64/:C/armv6hf/armv6/}-${TARGET_ABI}-freebsd11.0
33BUILD_TRIPLE?=	${BUILD_ARCH:C/amd64/x86_64/:C/armv6hf/armv6/}-unknown-freebsd11.0
34CFLAGS+=	-DLLVM_DEFAULT_TARGET_TRIPLE=\"${TARGET_TRIPLE}\" \
35		-DLLVM_HOST_TRIPLE=\"${BUILD_TRIPLE}\" \
36		-DDEFAULT_SYSROOT=\"${TOOLS_PREFIX}\"
37CXXFLAGS+=	-fno-exceptions -fno-rtti
38
39.PATH:	${LLVM_SRCS}/${SRCDIR}
40
41TBLGEN?=	tblgen
42CLANG_TBLGEN?=	clang-tblgen
43
44Intrinsics.inc.h: ${LLVM_SRCS}/include/llvm/IR/Intrinsics.td \
45		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsARM.td \
46		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsHexagon.td \
47		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsMips.td \
48		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsNVVM.td \
49		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsPowerPC.td \
50		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsR600.td \
51		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsX86.td \
52		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsXCore.td
53	${TBLGEN} -I ${LLVM_SRCS}/include \
54	    -gen-intrinsic -o ${.TARGET} \
55	    ${LLVM_SRCS}/include/llvm/IR/Intrinsics.td
56.for arch in \
57	ARM/ARM Mips/Mips PowerPC/PPC Sparc/Sparc X86/X86
58. for hdr in \
59	AsmMatcher/-gen-asm-matcher \
60	AsmWriter1/-gen-asm-writer,-asmwriternum=1 \
61	AsmWriter/-gen-asm-writer \
62	CallingConv/-gen-callingconv \
63	CodeEmitter/-gen-emitter \
64	DAGISel/-gen-dag-isel \
65	DisassemblerTables/-gen-disassembler \
66	FastISel/-gen-fast-isel \
67	InstrInfo/-gen-instr-info \
68	MCCodeEmitter/-gen-emitter,-mc-emitter \
69	MCPseudoLowering/-gen-pseudo-lowering \
70	RegisterInfo/-gen-register-info \
71	SubtargetInfo/-gen-subtarget
72${arch:T}Gen${hdr:H:C/$/.inc.h/}: ${LLVM_SRCS}/lib/Target/${arch:H}/${arch:T}.td
73	${TBLGEN} -I ${LLVM_SRCS}/include -I ${LLVM_SRCS}/lib/Target/${arch:H} \
74	    ${hdr:T:C/,/ /g} -o ${.TARGET} \
75	    ${LLVM_SRCS}/lib/Target/${arch:H}/${arch:T}.td
76. endfor
77.endfor
78
79Attrs.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
80	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
81	    -gen-clang-attr-classes -o ${.TARGET} ${.ALLSRC}
82
83AttrDump.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
84	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
85	    -gen-clang-attr-dump -o ${.TARGET} ${.ALLSRC}
86
87AttrIdentifierArg.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
88	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
89	    -gen-clang-attr-identifier-arg-list -o ${.TARGET} ${.ALLSRC}
90
91AttrImpl.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
92	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
93	    -gen-clang-attr-impl -o ${.TARGET} ${.ALLSRC}
94
95AttrLateParsed.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
96	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
97	    -gen-clang-attr-late-parsed-list -o ${.TARGET} ${.ALLSRC}
98
99AttrList.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
100	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
101	    -gen-clang-attr-list -o ${.TARGET} ${.ALLSRC}
102
103AttrParsedAttrImpl.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
104	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
105	    -gen-clang-attr-parsed-attr-impl -o ${.TARGET} ${.ALLSRC}
106
107AttrParsedAttrKinds.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
108	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
109	    -gen-clang-attr-parsed-attr-kinds -o ${.TARGET} ${.ALLSRC}
110
111AttrParsedAttrList.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
112	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
113	    -gen-clang-attr-parsed-attr-list -o ${.TARGET} ${.ALLSRC}
114
115AttrPCHRead.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
116	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
117	    -gen-clang-attr-pch-read -o ${.TARGET} ${.ALLSRC}
118
119AttrPCHWrite.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
120	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
121	    -gen-clang-attr-pch-write -o ${.TARGET} ${.ALLSRC}
122
123AttrSpellings.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
124	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
125	    -gen-clang-attr-spelling-list -o ${.TARGET} ${.ALLSRC}
126
127AttrSpellingListIndex.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
128	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
129	    -gen-clang-attr-spelling-index -o ${.TARGET} ${.ALLSRC}
130
131AttrTemplateInstantiate.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
132	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
133	    -gen-clang-attr-template-instantiate -o ${.TARGET} ${.ALLSRC}
134
135AttrTypeArg.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
136	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
137	    -gen-clang-attr-type-arg-list -o ${.TARGET} ${.ALLSRC}
138
139CommentCommandInfo.inc.h: ${CLANG_SRCS}/include/clang/AST/CommentCommands.td
140	${CLANG_TBLGEN} \
141	    -gen-clang-comment-command-info -o ${.TARGET} ${.ALLSRC}
142
143CommentCommandList.inc.h: ${CLANG_SRCS}/include/clang/AST/CommentCommands.td
144	${CLANG_TBLGEN} \
145	    -gen-clang-comment-command-list -o ${.TARGET} ${.ALLSRC}
146
147CommentHTMLNamedCharacterReferences.inc.h: \
148	${CLANG_SRCS}/include/clang/AST/CommentHTMLNamedCharacterReferences.td
149	${CLANG_TBLGEN} \
150	    -gen-clang-comment-html-named-character-references -o ${.TARGET} \
151	    ${.ALLSRC}
152
153CommentHTMLTags.inc.h: ${CLANG_SRCS}/include/clang/AST/CommentHTMLTags.td
154	${CLANG_TBLGEN} \
155	    -gen-clang-comment-html-tags -o ${.TARGET} ${.ALLSRC}
156
157CommentHTMLTagsProperties.inc.h: \
158	${CLANG_SRCS}/include/clang/AST/CommentHTMLTags.td
159	${CLANG_TBLGEN} \
160	    -gen-clang-comment-html-tags-properties -o ${.TARGET} ${.ALLSRC}
161
162CommentNodes.inc.h: ${CLANG_SRCS}/include/clang/Basic/CommentNodes.td
163	${CLANG_TBLGEN} \
164	    -gen-clang-comment-nodes -o ${.TARGET} ${.ALLSRC}
165
166DeclNodes.inc.h: ${CLANG_SRCS}/include/clang/Basic/DeclNodes.td
167	${CLANG_TBLGEN} \
168	    -gen-clang-decl-nodes -o ${.TARGET} ${.ALLSRC}
169
170StmtNodes.inc.h: ${CLANG_SRCS}/include/clang/Basic/StmtNodes.td
171	${CLANG_TBLGEN} \
172	    -gen-clang-stmt-nodes -o ${.TARGET} ${.ALLSRC}
173
174arm_neon.h: ${CLANG_SRCS}/include/clang/Basic/arm_neon.td
175	${CLANG_TBLGEN} \
176	    -gen-arm-neon -o ${.TARGET} ${.ALLSRC}
177
178arm_neon.inc.h: ${CLANG_SRCS}/include/clang/Basic/arm_neon.td
179	${CLANG_TBLGEN} \
180	    -gen-arm-neon-sema -o ${.TARGET} ${.ALLSRC}
181
182DiagnosticGroups.inc.h: ${CLANG_SRCS}/include/clang/Basic/Diagnostic.td
183	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include/clang/Basic \
184	    -gen-clang-diag-groups -o ${.TARGET} ${.ALLSRC}
185
186DiagnosticIndexName.inc.h: ${CLANG_SRCS}/include/clang/Basic/Diagnostic.td
187	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include/clang/Basic \
188	    -gen-clang-diags-index-name -o ${.TARGET} ${.ALLSRC}
189
190.for hdr in AST Analysis Comment Common Driver Frontend Lex Parse Sema Serialization
191Diagnostic${hdr}Kinds.inc.h: ${CLANG_SRCS}/include/clang/Basic/Diagnostic.td
192	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include/clang/Basic \
193	    -gen-clang-diags-defs -clang-component=${hdr} -o ${.TARGET} \
194	    ${.ALLSRC}
195.endfor
196
197Options.inc.h: ${CLANG_SRCS}/include/clang/Driver/Options.td
198	${TBLGEN} -I ${LLVM_SRCS}/include -I ${CLANG_SRCS}/include/clang/Driver \
199	    -gen-opt-parser-defs -o ${.TARGET} ${.ALLSRC}
200
201CC1AsOptions.inc.h: ${CLANG_SRCS}/include/clang/Driver/CC1AsOptions.td
202	${TBLGEN} -I ${LLVM_SRCS}/include -I ${CLANG_SRCS}/include/clang/Driver \
203	    -gen-opt-parser-defs -o ${.TARGET} ${.ALLSRC}
204
205Checkers.inc.h: ${CLANG_SRCS}/lib/StaticAnalyzer/Checkers/Checkers.td \
206	    ${CLANG_SRCS}/include/clang/StaticAnalyzer/Checkers/CheckerBase.td
207	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
208	    -gen-clang-sa-checkers -o ${.TARGET} \
209	    ${CLANG_SRCS}/lib/StaticAnalyzer/Checkers/Checkers.td
210
211SRCS+=		${TGHDRS:C/$/.inc.h/}
212DPADD+=		${TGHDRS:C/$/.inc.h/}
213CLEANFILES+=	${TGHDRS:C/$/.inc.h/}
214