xref: /freebsd/lib/clang/clang.build.mk (revision 3b8f08459569bf0faa21473e5cec2491e95c9349)
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
41.if ${MK_STAGING} == "yes"
42TBLGEN= ${STAGE_HOST_OBJTOP}/usr/bin/tblgen
43CLANG_TBLGEN= ${STAGE_HOST_OBJTOP}/usr/bin/clang-tblgen
44.endif
45TBLGEN?=	tblgen
46CLANG_TBLGEN?=	clang-tblgen
47
48Intrinsics.inc.h: ${LLVM_SRCS}/include/llvm/IR/Intrinsics.td \
49		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsARM.td \
50		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsHexagon.td \
51		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsMips.td \
52		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsNVVM.td \
53		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsPowerPC.td \
54		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsR600.td \
55		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsX86.td \
56		  ${LLVM_SRCS}/include/llvm/IR/IntrinsicsXCore.td
57	${TBLGEN} -I ${LLVM_SRCS}/include \
58	    -gen-intrinsic -o ${.TARGET} \
59	    ${LLVM_SRCS}/include/llvm/IR/Intrinsics.td
60.for arch in \
61	ARM/ARM Mips/Mips PowerPC/PPC Sparc/Sparc X86/X86
62. for hdr in \
63	AsmMatcher/-gen-asm-matcher \
64	AsmWriter1/-gen-asm-writer,-asmwriternum=1 \
65	AsmWriter/-gen-asm-writer \
66	CallingConv/-gen-callingconv \
67	CodeEmitter/-gen-emitter \
68	DAGISel/-gen-dag-isel \
69	DisassemblerTables/-gen-disassembler \
70	FastISel/-gen-fast-isel \
71	InstrInfo/-gen-instr-info \
72	MCCodeEmitter/-gen-emitter,-mc-emitter \
73	MCPseudoLowering/-gen-pseudo-lowering \
74	RegisterInfo/-gen-register-info \
75	SubtargetInfo/-gen-subtarget
76${arch:T}Gen${hdr:H:C/$/.inc.h/}: ${LLVM_SRCS}/lib/Target/${arch:H}/${arch:T}.td
77	${TBLGEN} -I ${LLVM_SRCS}/include -I ${LLVM_SRCS}/lib/Target/${arch:H} \
78	    ${hdr:T:C/,/ /g} -o ${.TARGET} \
79	    ${LLVM_SRCS}/lib/Target/${arch:H}/${arch:T}.td
80. endfor
81.endfor
82
83Attrs.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
84	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
85	    -gen-clang-attr-classes -o ${.TARGET} ${.ALLSRC}
86
87AttrDump.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
88	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
89	    -gen-clang-attr-dump -o ${.TARGET} ${.ALLSRC}
90
91AttrIdentifierArg.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
92	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
93	    -gen-clang-attr-identifier-arg-list -o ${.TARGET} ${.ALLSRC}
94
95AttrImpl.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
96	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
97	    -gen-clang-attr-impl -o ${.TARGET} ${.ALLSRC}
98
99AttrLateParsed.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
100	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
101	    -gen-clang-attr-late-parsed-list -o ${.TARGET} ${.ALLSRC}
102
103AttrList.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
104	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
105	    -gen-clang-attr-list -o ${.TARGET} ${.ALLSRC}
106
107AttrParsedAttrImpl.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
108	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
109	    -gen-clang-attr-parsed-attr-impl -o ${.TARGET} ${.ALLSRC}
110
111AttrParsedAttrKinds.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
112	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
113	    -gen-clang-attr-parsed-attr-kinds -o ${.TARGET} ${.ALLSRC}
114
115AttrParsedAttrList.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
116	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
117	    -gen-clang-attr-parsed-attr-list -o ${.TARGET} ${.ALLSRC}
118
119AttrPCHRead.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
120	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
121	    -gen-clang-attr-pch-read -o ${.TARGET} ${.ALLSRC}
122
123AttrPCHWrite.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
124	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
125	    -gen-clang-attr-pch-write -o ${.TARGET} ${.ALLSRC}
126
127AttrSpellings.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
128	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
129	    -gen-clang-attr-spelling-list -o ${.TARGET} ${.ALLSRC}
130
131AttrSpellingListIndex.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
132	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
133	    -gen-clang-attr-spelling-index -o ${.TARGET} ${.ALLSRC}
134
135AttrTemplateInstantiate.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
136	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
137	    -gen-clang-attr-template-instantiate -o ${.TARGET} ${.ALLSRC}
138
139AttrTypeArg.inc.h: ${CLANG_SRCS}/include/clang/Basic/Attr.td
140	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
141	    -gen-clang-attr-type-arg-list -o ${.TARGET} ${.ALLSRC}
142
143CommentCommandInfo.inc.h: ${CLANG_SRCS}/include/clang/AST/CommentCommands.td
144	${CLANG_TBLGEN} \
145	    -gen-clang-comment-command-info -o ${.TARGET} ${.ALLSRC}
146
147CommentCommandList.inc.h: ${CLANG_SRCS}/include/clang/AST/CommentCommands.td
148	${CLANG_TBLGEN} \
149	    -gen-clang-comment-command-list -o ${.TARGET} ${.ALLSRC}
150
151CommentHTMLNamedCharacterReferences.inc.h: \
152	${CLANG_SRCS}/include/clang/AST/CommentHTMLNamedCharacterReferences.td
153	${CLANG_TBLGEN} \
154	    -gen-clang-comment-html-named-character-references -o ${.TARGET} \
155	    ${.ALLSRC}
156
157CommentHTMLTags.inc.h: ${CLANG_SRCS}/include/clang/AST/CommentHTMLTags.td
158	${CLANG_TBLGEN} \
159	    -gen-clang-comment-html-tags -o ${.TARGET} ${.ALLSRC}
160
161CommentHTMLTagsProperties.inc.h: \
162	${CLANG_SRCS}/include/clang/AST/CommentHTMLTags.td
163	${CLANG_TBLGEN} \
164	    -gen-clang-comment-html-tags-properties -o ${.TARGET} ${.ALLSRC}
165
166CommentNodes.inc.h: ${CLANG_SRCS}/include/clang/Basic/CommentNodes.td
167	${CLANG_TBLGEN} \
168	    -gen-clang-comment-nodes -o ${.TARGET} ${.ALLSRC}
169
170DeclNodes.inc.h: ${CLANG_SRCS}/include/clang/Basic/DeclNodes.td
171	${CLANG_TBLGEN} \
172	    -gen-clang-decl-nodes -o ${.TARGET} ${.ALLSRC}
173
174StmtNodes.inc.h: ${CLANG_SRCS}/include/clang/Basic/StmtNodes.td
175	${CLANG_TBLGEN} \
176	    -gen-clang-stmt-nodes -o ${.TARGET} ${.ALLSRC}
177
178arm_neon.h: ${CLANG_SRCS}/include/clang/Basic/arm_neon.td
179	${CLANG_TBLGEN} \
180	    -gen-arm-neon -o ${.TARGET} ${.ALLSRC}
181
182arm_neon.inc.h: ${CLANG_SRCS}/include/clang/Basic/arm_neon.td
183	${CLANG_TBLGEN} \
184	    -gen-arm-neon-sema -o ${.TARGET} ${.ALLSRC}
185
186DiagnosticGroups.inc.h: ${CLANG_SRCS}/include/clang/Basic/Diagnostic.td
187	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include/clang/Basic \
188	    -gen-clang-diag-groups -o ${.TARGET} ${.ALLSRC}
189
190DiagnosticIndexName.inc.h: ${CLANG_SRCS}/include/clang/Basic/Diagnostic.td
191	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include/clang/Basic \
192	    -gen-clang-diags-index-name -o ${.TARGET} ${.ALLSRC}
193
194.for hdr in AST Analysis Comment Common Driver Frontend Lex Parse Sema Serialization
195Diagnostic${hdr}Kinds.inc.h: ${CLANG_SRCS}/include/clang/Basic/Diagnostic.td
196	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include/clang/Basic \
197	    -gen-clang-diags-defs -clang-component=${hdr} -o ${.TARGET} \
198	    ${.ALLSRC}
199.endfor
200
201Options.inc.h: ${CLANG_SRCS}/include/clang/Driver/Options.td
202	${TBLGEN} -I ${LLVM_SRCS}/include -I ${CLANG_SRCS}/include/clang/Driver \
203	    -gen-opt-parser-defs -o ${.TARGET} ${.ALLSRC}
204
205CC1AsOptions.inc.h: ${CLANG_SRCS}/include/clang/Driver/CC1AsOptions.td
206	${TBLGEN} -I ${LLVM_SRCS}/include -I ${CLANG_SRCS}/include/clang/Driver \
207	    -gen-opt-parser-defs -o ${.TARGET} ${.ALLSRC}
208
209Checkers.inc.h: ${CLANG_SRCS}/lib/StaticAnalyzer/Checkers/Checkers.td \
210	    ${CLANG_SRCS}/include/clang/StaticAnalyzer/Checkers/CheckerBase.td
211	${CLANG_TBLGEN} -I ${CLANG_SRCS}/include \
212	    -gen-clang-sa-checkers -o ${.TARGET} \
213	    ${CLANG_SRCS}/lib/StaticAnalyzer/Checkers/Checkers.td
214
215SRCS+=		${TGHDRS:C/$/.inc.h/}
216DPADD+=		${TGHDRS:C/$/.inc.h/}
217CLEANFILES+=	${TGHDRS:C/$/.inc.h/}
218
219# if we are not doing explicit 'make depend', there is
220# nothing to cause these to be generated.
221beforebuild: ${SRCS:M*.inc.h}
222