1*1ad61ae0Srobert# $OpenBSD: Makefile,v 1.26 2023/11/11 18:35:35 robert Exp $
20545c0e3Spascal
30545c0e3Spascal.include <bsd.own.mk>
40545c0e3Spascal
5*1ad61ae0SrobertLLVM_V=			16
60545c0e3SpascalCLANG_INTR_INCDIR=	/usr/lib/clang/${LLVM_V}/include
70545c0e3Spascal
8668710abSkettenisTBLGEN= ${.OBJDIR}/../../../clang-tblgen/clang-tblgen
9aa1fa3d4SpatrickCLANG_INC=${.CURDIR}/../../../../../llvm/clang/include
10668710abSkettenis
11aa1fa3d4Spatrick.PATH:	${.CURDIR}/../../../../../llvm/clang/lib/Headers
120545c0e3Spascal
13668710abSkettenisGEN=
14*1ad61ae0SrobertHEADERS=	intrin.h \
15*1ad61ae0Srobert		stdalign.h \
163540aa19Skettenis		stdatomic.h \
173540aa19Skettenis		stdnoreturn.h \
183540aa19Skettenis		tgmath.h \
193540aa19Skettenis		unwind.h \
20*1ad61ae0Srobert		vadefs.h \
213540aa19Skettenis		varargs.h \
223540aa19Skettenis		module.modulemap \
233540aa19Skettenis
243540aa19Skettenis.if ${MACHINE_ARCH} == "aarch64" || ${MACHINE_ARCH} == "arm"
25668710abSkettenisGEN+=		arm_neon.h
264f0ddf55SpatrickGEN+=		arm_fp16.h
27c04ab3e3SpatrickGEN+=		arm_sve.h
28c04ab3e3SpatrickGEN+=		arm_bf16.h
29aa1fa3d4SpatrickGEN+=		arm_mve.h
30c04ab3e3SpatrickGEN+=		arm_cde.h
31aa1fa3d4SpatrickHEADERS+=	arm_acle.h arm_cmse.h ${GEN}
323540aa19Skettenis.elif ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
33*1ad61ae0SrobertHEADERS+=	__wmmintrin_aes.h \
34*1ad61ae0Srobert		__wmmintrin_pclmul.h \
35*1ad61ae0Srobert		adxintrin.h \
360545c0e3Spascal		ammintrin.h \
37*1ad61ae0Srobert		amxfp16intrin.h \
38c04ab3e3Spatrick		amxintrin.h \
390545c0e3Spascal		avx2intrin.h \
40aa1fa3d4Spatrick		avx512bf16intrin.h \
41c04ab3e3Spatrick		avx512bitalgintrin.h \
42*1ad61ae0Srobert		avx512bwintrin.h \
430545c0e3Spascal		avx512cdintrin.h \
444ad36cc8Skettenis		avx512dqintrin.h \
450545c0e3Spascal		avx512erintrin.h \
460545c0e3Spascal		avx512fintrin.h \
47*1ad61ae0Srobert		avx512fp16intrin.h \
484ad36cc8Skettenis		avx512ifmaintrin.h \
494ad36cc8Skettenis		avx512ifmavlintrin.h \
504ad36cc8Skettenis		avx512pfintrin.h \
51*1ad61ae0Srobert		avx512vbmi2intrin.h \
524ad36cc8Skettenis		avx512vbmiintrin.h \
534ad36cc8Skettenis		avx512vbmivlintrin.h \
54aa1fa3d4Spatrick		avx512vlbf16intrin.h \
55*1ad61ae0Srobert		avx512vlbitalgintrin.h \
560545c0e3Spascal		avx512vlbwintrin.h \
574ad36cc8Skettenis		avx512vlcdintrin.h \
580545c0e3Spascal		avx512vldqintrin.h \
59*1ad61ae0Srobert		avx512vlfp16intrin.h \
604ad36cc8Skettenis		avx512vlintrin.h \
61*1ad61ae0Srobert		avx512vlvbmi2intrin.h \
62aa1fa3d4Spatrick		avx512vlvnniintrin.h \
63*1ad61ae0Srobert		avx512vlvp2intersectintrin.h \
64*1ad61ae0Srobert		avx512vnniintrin.h \
65*1ad61ae0Srobert		avx512vp2intersectintrin.h \
66*1ad61ae0Srobert		avx512vpopcntdqintrin.h \
67*1ad61ae0Srobert		avx512vpopcntdqvlintrin.h \
68*1ad61ae0Srobert		avxifmaintrin.h \
690545c0e3Spascal		avxintrin.h \
70*1ad61ae0Srobert		avxneconvertintrin.h \
71*1ad61ae0Srobert		avxvnniint8intrin.h \
725a38ef86Spatrick		avxvnniintrin.h \
730545c0e3Spascal		bmi2intrin.h \
740545c0e3Spascal		bmiintrin.h \
75c04ab3e3Spatrick		cet.h \
76*1ad61ae0Srobert		cetintrin.h \
774f0ddf55Spatrick		cldemoteintrin.h \
78466e1531Skettenis		clflushoptintrin.h \
79ed408325Spatrick		clwbintrin.h \
80*1ad61ae0Srobert		clzerointrin.h \
81*1ad61ae0Srobert		cmpccxaddintrin.h \
82*1ad61ae0Srobert		cpuid.h \
83*1ad61ae0Srobert		crc32intrin.h \
840545c0e3Spascal		emmintrin.h \
85aa1fa3d4Spatrick		enqcmdintrin.h \
860545c0e3Spascal		f16cintrin.h \
870545c0e3Spascal		fma4intrin.h \
880545c0e3Spascal		fmaintrin.h \
890545c0e3Spascal		fxsrintrin.h \
90fa686071Slandry		gfniintrin.h \
915a38ef86Spatrick		hresetintrin.h \
920545c0e3Spascal		ia32intrin.h \
930545c0e3Spascal		immintrin.h \
944f0ddf55Spatrick		invpcidintrin.h \
955a38ef86Spatrick		keylockerintrin.h \
96f7631674Spatrick		lwpintrin.h \
970545c0e3Spascal		lzcntintrin.h \
980545c0e3Spascal		mm3dnow.h \
99c04ab3e3Spatrick		mm_malloc.h \
100*1ad61ae0Srobert		mmintrin.h \
1014f0ddf55Spatrick		movdirintrin.h \
1024ad36cc8Skettenis		mwaitxintrin.h \
1030545c0e3Spascal		nmmintrin.h \
1044f0ddf55Spatrick		pconfigintrin.h \
105466e1531Skettenis		pkuintrin.h \
1060545c0e3Spascal		pmmintrin.h \
1070545c0e3Spascal		popcntintrin.h \
108*1ad61ae0Srobert		prfchiintrin.h \
1090545c0e3Spascal		prfchwintrin.h \
1104f0ddf55Spatrick		ptwriteintrin.h \
111*1ad61ae0Srobert		raointintrin.h \
112*1ad61ae0Srobert		rdpruintrin.h \
1130545c0e3Spascal		rdseedintrin.h \
1140545c0e3Spascal		rtmintrin.h \
115c04ab3e3Spatrick		serializeintrin.h \
1164f0ddf55Spatrick		sgxintrin.h \
1170545c0e3Spascal		shaintrin.h \
1180545c0e3Spascal		smmintrin.h \
1190545c0e3Spascal		tbmintrin.h \
1200545c0e3Spascal		tmmintrin.h \
121c04ab3e3Spatrick		tsxldtrkintrin.h \
1225a38ef86Spatrick		uintrintrin.h \
123fa686071Slandry		vaesintrin.h \
124fa686071Slandry		vpclmulqdqintrin.h \
1254f0ddf55Spatrick		waitpkgintrin.h \
1264f0ddf55Spatrick		wbnoinvdintrin.h \
1270545c0e3Spascal		wmmintrin.h \
1285a38ef86Spatrick		x86gprintrin.h \
1290545c0e3Spascal		x86intrin.h \
1300545c0e3Spascal		xmmintrin.h \
1310545c0e3Spascal		xopintrin.h \
132c04ab3e3Spatrick		xsavecintrin.h \
1330545c0e3Spascal		xsaveintrin.h \
1340545c0e3Spascal		xsaveoptintrin.h \
1350545c0e3Spascal		xsavesintrin.h \
1360545c0e3Spascal		xtestintrin.h
13745ee77c4Skettenis.elif ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64"
1383540aa19SkettenisHEADERS+=	altivec.h \
1393540aa19Skettenis		htmintrin.h \
1403540aa19Skettenis		htmxlintrin.h
1415a38ef86Spatrick.elif ${MACHINE_ARCH} == "riscv64"
1425a38ef86SpatrickGEN+=		riscv_vector.h
1433540aa19Skettenis.endif
1440545c0e3Spascal
1450545c0e3Spascalall:	${HEADERS}
1460545c0e3Spascal
1472e672466Spascalclean cleandir:
148668710abSkettenis	rm -f ${GEN}
1490545c0e3Spascal
1500545c0e3Spascalinstall includes: ${HEADERS}
151b8e06e2aSjsg.for dir in /usr/lib/clang /usr/lib/clang/${LLVM_V} ${CLANG_INTR_INCDIR}
152b8e06e2aSjsg	${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m ${DIRMODE} \
153b8e06e2aSjsg	    ${DESTDIR}${dir}
154b8e06e2aSjsg.endfor
15505c0f50bSjsg	${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 \
15605c0f50bSjsg	    ${.ALLSRC} ${DESTDIR}${CLANG_INTR_INCDIR}
1570545c0e3Spascal
158668710abSkettenisarm_neon.h: ${CLANG_INC}/clang/Basic/arm_neon.td
1594f0ddf55Spatrick	${TBLGEN} -gen-arm-neon -I${CLANG_INC}/clang/Basic \
1604f0ddf55Spatrick	    -o ${.TARGET} ${.ALLSRC}
1614f0ddf55Spatrick
1624f0ddf55Spatrickarm_fp16.h: ${CLANG_INC}/clang/Basic/arm_fp16.td
1634f0ddf55Spatrick	${TBLGEN} -gen-arm-fp16 -I${CLANG_INC}/clang/Basic \
1644f0ddf55Spatrick	    -o ${.TARGET} ${.ALLSRC}
165668710abSkettenis
166c04ab3e3Spatrickarm_sve.h: ${CLANG_INC}/clang/Basic/arm_sve.td
167c04ab3e3Spatrick	${TBLGEN} -gen-arm-sve-header -I${CLANG_INC}/clang/Basic \
168c04ab3e3Spatrick	    -o ${.TARGET} ${.ALLSRC}
169c04ab3e3Spatrick
170c04ab3e3Spatrickarm_bf16.h: ${CLANG_INC}/clang/Basic/arm_bf16.td
171c04ab3e3Spatrick	${TBLGEN} -gen-arm-bf16 -I${CLANG_INC}/clang/Basic \
172c04ab3e3Spatrick	    -o ${.TARGET} ${.ALLSRC}
173c04ab3e3Spatrick
174aa1fa3d4Spatrickarm_mve.h: ${CLANG_INC}/clang/Basic/arm_mve.td
175aa1fa3d4Spatrick	${TBLGEN} -gen-arm-mve-header -I${CLANG_INC}/clang/Basic \
176aa1fa3d4Spatrick	    -o ${.TARGET} ${.ALLSRC}
177aa1fa3d4Spatrick
178c04ab3e3Spatrickarm_cde.h: ${CLANG_INC}/clang/Basic/arm_cde.td
179c04ab3e3Spatrick	${TBLGEN} -gen-arm-cde-header -I${CLANG_INC}/clang/Basic \
180c04ab3e3Spatrick	    -o ${.TARGET} ${.ALLSRC}
181c04ab3e3Spatrick
1825a38ef86Spatrickriscv_vector.h: ${CLANG_INC}/clang/Basic/riscv_vector.td
1835a38ef86Spatrick	${TBLGEN} -gen-riscv-vector-header -I${CLANG_INC}/clang/Basic \
1845a38ef86Spatrick	    -o ${.TARGET} ${.ALLSRC}
1855a38ef86Spatrick
1860545c0e3Spascal.include <bsd.obj.mk>
187