xref: /freebsd/lib/libc++/Makefile (revision d0b2dbfa)
1
2SHLIBDIR?=	/lib
3
4.include <src.opts.mk>
5
6PACKAGE=	clibs
7_LIBCXXRTDIR=	${SRCTOP}/contrib/libcxxrt
8HDRDIR=		${SRCTOP}/contrib/llvm-project/libcxx/include
9SRCDIR=		${SRCTOP}/contrib/llvm-project/libcxx/src
10CXXINCLUDEDIR=	${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
11
12.PATH: ${SRCDIR}
13
14LIB=		c++
15SHLIB_MAJOR=	1
16SHLIB_LDSCRIPT=	libc++.ldscript
17
18SRCS+=		algorithm.cpp
19SRCS+=		any.cpp
20SRCS+=		atomic.cpp
21SRCS+=		barrier.cpp
22SRCS+=		bind.cpp
23SRCS+=		charconv.cpp
24SRCS+=		chrono.cpp
25SRCS+=		condition_variable.cpp
26SRCS+=		condition_variable_destructor.cpp
27SRCS+=		debug.cpp
28SRCS+=		exception.cpp
29SRCS+=		filesystem/directory_iterator.cpp
30SRCS+=		filesystem/int128_builtins.cpp
31SRCS+=		filesystem/operations.cpp
32SRCS+=		functional.cpp
33SRCS+=		future.cpp
34SRCS+=		hash.cpp
35SRCS+=		ios.cpp
36SRCS+=		ios.instantiations.cpp
37SRCS+=		iostream.cpp
38SRCS+=		legacy_debug_handler.cpp
39SRCS+=		legacy_pointer_safety.cpp
40SRCS+=		locale.cpp
41SRCS+=		memory.cpp
42SRCS+=		memory_resource.cpp
43SRCS+=		mutex.cpp
44SRCS+=		mutex_destructor.cpp
45SRCS+=		new.cpp
46SRCS+=		optional.cpp
47SRCS+=		random.cpp
48SRCS+=		random_shuffle.cpp
49SRCS+=		regex.cpp
50SRCS+=		ryu/d2fixed.cpp
51SRCS+=		ryu/d2s.cpp
52SRCS+=		ryu/f2s.cpp
53SRCS+=		shared_mutex.cpp
54SRCS+=		stdexcept.cpp
55SRCS+=		string.cpp
56SRCS+=		strstream.cpp
57SRCS+=		system_error.cpp
58SRCS+=		thread.cpp
59SRCS+=		typeinfo.cpp
60SRCS+=		utility.cpp
61SRCS+=		valarray.cpp
62SRCS+=		variant.cpp
63SRCS+=		vector.cpp
64SRCS+=		verbose_abort.cpp
65
66CXXRT_SRCS+=	auxhelper.cc
67CXXRT_SRCS+=	dynamic_cast.cc
68CXXRT_SRCS+=	exception.cc
69CXXRT_SRCS+=	guard.cc
70CXXRT_SRCS+=	libelftc_dem_gnu3.c
71CXXRT_SRCS+=	memory.cc
72CXXRT_SRCS+=	stdexcept.cc
73CXXRT_SRCS+=	terminate.cc
74CXXRT_SRCS+=	typeinfo.cc
75
76.for _S in ${CXXRT_SRCS}
77CLEANFILES+=	cxxrt_${_S}
78STATICOBJS+=	cxxrt_${_S:R}.o
79cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
80	ln -sf ${.ALLSRC} ${.TARGET}
81.endfor
82
83WARNS?=		0
84CFLAGS+=	-isystem ${.CURDIR}
85CFLAGS+=	-isystem ${HDRDIR}
86CFLAGS+=	-isystem ${SRCDIR}
87CFLAGS+=	-isystem ${_LIBCXXRTDIR}
88CFLAGS+=	-nostdinc++
89CFLAGS+=	-nostdlib
90CFLAGS+=	-D_LIBCPP_BUILDING_LIBRARY
91CFLAGS+=	-DLIBCXXRT
92CFLAGS+=	-ffunction-sections
93CFLAGS+=	-fdata-sections
94CXXSTD?=	c++20
95
96LIBADD+=	cxxrt
97
98INCSGROUPS+=	STD
99STDDIR=		${CXXINCLUDEDIR}
100STD_HEADERS+=	__assert
101STD_HEADERS+=	__availability
102STD_HEADERS+=	__bit_reference
103STD_HEADERS+=	__bsd_locale_defaults.h
104STD_HEADERS+=	__bsd_locale_fallbacks.h
105STD_HEADERS+=	__config
106STD_HEADERS+=	__debug
107STD_HEADERS+=	__errc
108STD_HEADERS+=	__hash_table
109STD_HEADERS+=	__locale
110STD_HEADERS+=	__mbstate_t.h
111STD_HEADERS+=	__mutex_base
112STD_HEADERS+=	__node_handle
113STD_HEADERS+=	__split_buffer
114STD_HEADERS+=	__std_stream
115STD_HEADERS+=	__threading_support
116STD_HEADERS+=	__tree
117STD_HEADERS+=	__undef_macros
118STD_HEADERS+=	__verbose_abort
119STD_HEADERS+=	algorithm
120STD_HEADERS+=	any
121STD_HEADERS+=	array
122STD_HEADERS+=	atomic
123STD_HEADERS+=	barrier
124STD_HEADERS+=	bit
125STD_HEADERS+=	bitset
126STD_HEADERS+=	cassert
127STD_HEADERS+=	ccomplex
128STD_HEADERS+=	cctype
129STD_HEADERS+=	cerrno
130STD_HEADERS+=	cfenv
131STD_HEADERS+=	cfloat
132STD_HEADERS+=	charconv
133STD_HEADERS+=	chrono
134STD_HEADERS+=	cinttypes
135STD_HEADERS+=	ciso646
136STD_HEADERS+=	climits
137STD_HEADERS+=	clocale
138STD_HEADERS+=	cmath
139STD_HEADERS+=	codecvt
140STD_HEADERS+=	compare
141STD_HEADERS+=	complex
142STD_HEADERS+=	complex.h
143STD_HEADERS+=	concepts
144STD_HEADERS+=	condition_variable
145STD_HEADERS+=	coroutine
146STD_HEADERS+=	csetjmp
147STD_HEADERS+=	csignal
148STD_HEADERS+=	cstdarg
149STD_HEADERS+=	cstdbool
150STD_HEADERS+=	cstddef
151STD_HEADERS+=	cstdint
152STD_HEADERS+=	cstdio
153STD_HEADERS+=	cstdlib
154STD_HEADERS+=	cstring
155STD_HEADERS+=	ctgmath
156STD_HEADERS+=	ctime
157STD_HEADERS+=	ctype.h
158STD_HEADERS+=	cuchar
159STD_HEADERS+=	cwchar
160STD_HEADERS+=	cwctype
161STD_HEADERS+=	deque
162STD_HEADERS+=	errno.h
163STD_HEADERS+=	exception
164STD_HEADERS+=	execution
165STD_HEADERS+=	expected
166STD_HEADERS+=	fenv.h
167STD_HEADERS+=	filesystem
168STD_HEADERS+=	float.h
169STD_HEADERS+=	format
170STD_HEADERS+=	forward_list
171STD_HEADERS+=	fstream
172STD_HEADERS+=	functional
173STD_HEADERS+=	future
174STD_HEADERS+=	initializer_list
175STD_HEADERS+=	inttypes.h
176STD_HEADERS+=	iomanip
177STD_HEADERS+=	ios
178STD_HEADERS+=	iosfwd
179STD_HEADERS+=	iostream
180STD_HEADERS+=	istream
181STD_HEADERS+=	iterator
182STD_HEADERS+=	latch
183STD_HEADERS+=	libcxx.imp
184STD_HEADERS+=	limits
185STD_HEADERS+=	limits.h
186STD_HEADERS+=	list
187STD_HEADERS+=	locale
188STD_HEADERS+=	locale.h
189STD_HEADERS+=	map
190STD_HEADERS+=	math.h
191STD_HEADERS+=	memory
192STD_HEADERS+=	memory_resource
193STD_HEADERS+=	mutex
194STD_HEADERS+=	new
195STD_HEADERS+=	numbers
196STD_HEADERS+=	numeric
197STD_HEADERS+=	optional
198STD_HEADERS+=	ostream
199STD_HEADERS+=	queue
200STD_HEADERS+=	random
201STD_HEADERS+=	ranges
202STD_HEADERS+=	ratio
203STD_HEADERS+=	regex
204STD_HEADERS+=	scoped_allocator
205STD_HEADERS+=	semaphore
206STD_HEADERS+=	set
207STD_HEADERS+=	setjmp.h
208STD_HEADERS+=	shared_mutex
209STD_HEADERS+=	source_location
210STD_HEADERS+=	span
211STD_HEADERS+=	sstream
212STD_HEADERS+=	stack
213STD_HEADERS+=	stdatomic.h
214STD_HEADERS+=	stdbool.h
215STD_HEADERS+=	stddef.h
216STD_HEADERS+=	stdexcept
217STD_HEADERS+=	stdint.h
218STD_HEADERS+=	stdio.h
219STD_HEADERS+=	stdlib.h
220STD_HEADERS+=	streambuf
221STD_HEADERS+=	string
222STD_HEADERS+=	string.h
223STD_HEADERS+=	string_view
224STD_HEADERS+=	strstream
225STD_HEADERS+=	system_error
226STD_HEADERS+=	tgmath.h
227STD_HEADERS+=	thread
228STD_HEADERS+=	tuple
229STD_HEADERS+=	type_traits
230STD_HEADERS+=	typeindex
231STD_HEADERS+=	typeinfo
232STD_HEADERS+=	uchar.h
233STD_HEADERS+=	unordered_map
234STD_HEADERS+=	unordered_set
235STD_HEADERS+=	utility
236STD_HEADERS+=	valarray
237STD_HEADERS+=	variant
238STD_HEADERS+=	vector
239STD_HEADERS+=	version
240STD_HEADERS+=	wchar.h
241STD_HEADERS+=	wctype.h
242.for hdr in ${STD_HEADERS}
243STD+=		${HDRDIR}/${hdr}
244.endfor
245
246# Special case for __config_site, which as of libc++ 12.0.0 is generated by
247# CMake, and as of 13.0.0 installed side-by-side with__config.
248STD+=		${.CURDIR}/__config_site
249
250# Special case for module.modulemap, which as of libc++ 15.0.0 is generated by
251# CMake.
252STD+=		${.CURDIR}/module.modulemap
253
254RT_HEADERS+=	cxxabi.h
255.for hdr in ${RT_HEADERS}
256STD+=		${_LIBCXXRTDIR}/${hdr}
257.endfor
258
259INCSGROUPS+=	ALG
260ALGDIR=		${CXXINCLUDEDIR}/__algorithm
261ALG_HEADERS+=	adjacent_find.h
262ALG_HEADERS+=	all_of.h
263ALG_HEADERS+=	any_of.h
264ALG_HEADERS+=	binary_search.h
265ALG_HEADERS+=	clamp.h
266ALG_HEADERS+=	comp.h
267ALG_HEADERS+=	comp_ref_type.h
268ALG_HEADERS+=	copy.h
269ALG_HEADERS+=	copy_backward.h
270ALG_HEADERS+=	copy_if.h
271ALG_HEADERS+=	copy_move_common.h
272ALG_HEADERS+=	copy_n.h
273ALG_HEADERS+=	count.h
274ALG_HEADERS+=	count_if.h
275ALG_HEADERS+=	equal.h
276ALG_HEADERS+=	equal_range.h
277ALG_HEADERS+=	fill.h
278ALG_HEADERS+=	fill_n.h
279ALG_HEADERS+=	find.h
280ALG_HEADERS+=	find_end.h
281ALG_HEADERS+=	find_first_of.h
282ALG_HEADERS+=	find_if.h
283ALG_HEADERS+=	find_if_not.h
284ALG_HEADERS+=	for_each.h
285ALG_HEADERS+=	for_each_n.h
286ALG_HEADERS+=	generate.h
287ALG_HEADERS+=	generate_n.h
288ALG_HEADERS+=	half_positive.h
289ALG_HEADERS+=	in_found_result.h
290ALG_HEADERS+=	in_fun_result.h
291ALG_HEADERS+=	in_in_out_result.h
292ALG_HEADERS+=	in_in_result.h
293ALG_HEADERS+=	in_out_out_result.h
294ALG_HEADERS+=	in_out_result.h
295ALG_HEADERS+=	includes.h
296ALG_HEADERS+=	inplace_merge.h
297ALG_HEADERS+=	is_heap.h
298ALG_HEADERS+=	is_heap_until.h
299ALG_HEADERS+=	is_partitioned.h
300ALG_HEADERS+=	is_permutation.h
301ALG_HEADERS+=	is_sorted.h
302ALG_HEADERS+=	is_sorted_until.h
303ALG_HEADERS+=	iter_swap.h
304ALG_HEADERS+=	iterator_operations.h
305ALG_HEADERS+=	lexicographical_compare.h
306ALG_HEADERS+=	lower_bound.h
307ALG_HEADERS+=	make_heap.h
308ALG_HEADERS+=	make_projected.h
309ALG_HEADERS+=	max.h
310ALG_HEADERS+=	max_element.h
311ALG_HEADERS+=	merge.h
312ALG_HEADERS+=	min.h
313ALG_HEADERS+=	min_element.h
314ALG_HEADERS+=	min_max_result.h
315ALG_HEADERS+=	minmax.h
316ALG_HEADERS+=	minmax_element.h
317ALG_HEADERS+=	mismatch.h
318ALG_HEADERS+=	move.h
319ALG_HEADERS+=	move_backward.h
320ALG_HEADERS+=	next_permutation.h
321ALG_HEADERS+=	none_of.h
322ALG_HEADERS+=	nth_element.h
323ALG_HEADERS+=	partial_sort.h
324ALG_HEADERS+=	partial_sort_copy.h
325ALG_HEADERS+=	partition.h
326ALG_HEADERS+=	partition_copy.h
327ALG_HEADERS+=	partition_point.h
328ALG_HEADERS+=	pop_heap.h
329ALG_HEADERS+=	prev_permutation.h
330ALG_HEADERS+=	push_heap.h
331ALG_HEADERS+=	ranges_adjacent_find.h
332ALG_HEADERS+=	ranges_all_of.h
333ALG_HEADERS+=	ranges_any_of.h
334ALG_HEADERS+=	ranges_binary_search.h
335ALG_HEADERS+=	ranges_clamp.h
336ALG_HEADERS+=	ranges_copy.h
337ALG_HEADERS+=	ranges_copy_backward.h
338ALG_HEADERS+=	ranges_copy_if.h
339ALG_HEADERS+=	ranges_copy_n.h
340ALG_HEADERS+=	ranges_count.h
341ALG_HEADERS+=	ranges_count_if.h
342ALG_HEADERS+=	ranges_equal.h
343ALG_HEADERS+=	ranges_equal_range.h
344ALG_HEADERS+=	ranges_fill.h
345ALG_HEADERS+=	ranges_fill_n.h
346ALG_HEADERS+=	ranges_find.h
347ALG_HEADERS+=	ranges_find_end.h
348ALG_HEADERS+=	ranges_find_first_of.h
349ALG_HEADERS+=	ranges_find_if.h
350ALG_HEADERS+=	ranges_find_if_not.h
351ALG_HEADERS+=	ranges_for_each.h
352ALG_HEADERS+=	ranges_for_each_n.h
353ALG_HEADERS+=	ranges_generate.h
354ALG_HEADERS+=	ranges_generate_n.h
355ALG_HEADERS+=	ranges_includes.h
356ALG_HEADERS+=	ranges_inplace_merge.h
357ALG_HEADERS+=	ranges_is_heap.h
358ALG_HEADERS+=	ranges_is_heap_until.h
359ALG_HEADERS+=	ranges_is_partitioned.h
360ALG_HEADERS+=	ranges_is_permutation.h
361ALG_HEADERS+=	ranges_is_sorted.h
362ALG_HEADERS+=	ranges_is_sorted_until.h
363ALG_HEADERS+=	ranges_iterator_concept.h
364ALG_HEADERS+=	ranges_lexicographical_compare.h
365ALG_HEADERS+=	ranges_lower_bound.h
366ALG_HEADERS+=	ranges_make_heap.h
367ALG_HEADERS+=	ranges_max.h
368ALG_HEADERS+=	ranges_max_element.h
369ALG_HEADERS+=	ranges_merge.h
370ALG_HEADERS+=	ranges_min.h
371ALG_HEADERS+=	ranges_min_element.h
372ALG_HEADERS+=	ranges_minmax.h
373ALG_HEADERS+=	ranges_minmax_element.h
374ALG_HEADERS+=	ranges_mismatch.h
375ALG_HEADERS+=	ranges_move.h
376ALG_HEADERS+=	ranges_move_backward.h
377ALG_HEADERS+=	ranges_next_permutation.h
378ALG_HEADERS+=	ranges_none_of.h
379ALG_HEADERS+=	ranges_nth_element.h
380ALG_HEADERS+=	ranges_partial_sort.h
381ALG_HEADERS+=	ranges_partial_sort_copy.h
382ALG_HEADERS+=	ranges_partition.h
383ALG_HEADERS+=	ranges_partition_copy.h
384ALG_HEADERS+=	ranges_partition_point.h
385ALG_HEADERS+=	ranges_pop_heap.h
386ALG_HEADERS+=	ranges_prev_permutation.h
387ALG_HEADERS+=	ranges_push_heap.h
388ALG_HEADERS+=	ranges_remove.h
389ALG_HEADERS+=	ranges_remove_copy.h
390ALG_HEADERS+=	ranges_remove_copy_if.h
391ALG_HEADERS+=	ranges_remove_if.h
392ALG_HEADERS+=	ranges_replace.h
393ALG_HEADERS+=	ranges_replace_copy.h
394ALG_HEADERS+=	ranges_replace_copy_if.h
395ALG_HEADERS+=	ranges_replace_if.h
396ALG_HEADERS+=	ranges_reverse.h
397ALG_HEADERS+=	ranges_reverse_copy.h
398ALG_HEADERS+=	ranges_rotate.h
399ALG_HEADERS+=	ranges_rotate_copy.h
400ALG_HEADERS+=	ranges_sample.h
401ALG_HEADERS+=	ranges_search.h
402ALG_HEADERS+=	ranges_search_n.h
403ALG_HEADERS+=	ranges_set_difference.h
404ALG_HEADERS+=	ranges_set_intersection.h
405ALG_HEADERS+=	ranges_set_symmetric_difference.h
406ALG_HEADERS+=	ranges_set_union.h
407ALG_HEADERS+=	ranges_shuffle.h
408ALG_HEADERS+=	ranges_sort.h
409ALG_HEADERS+=	ranges_sort_heap.h
410ALG_HEADERS+=	ranges_stable_partition.h
411ALG_HEADERS+=	ranges_stable_sort.h
412ALG_HEADERS+=	ranges_swap_ranges.h
413ALG_HEADERS+=	ranges_transform.h
414ALG_HEADERS+=	ranges_unique.h
415ALG_HEADERS+=	ranges_unique_copy.h
416ALG_HEADERS+=	ranges_upper_bound.h
417ALG_HEADERS+=	remove.h
418ALG_HEADERS+=	remove_copy.h
419ALG_HEADERS+=	remove_copy_if.h
420ALG_HEADERS+=	remove_if.h
421ALG_HEADERS+=	replace.h
422ALG_HEADERS+=	replace_copy.h
423ALG_HEADERS+=	replace_copy_if.h
424ALG_HEADERS+=	replace_if.h
425ALG_HEADERS+=	reverse.h
426ALG_HEADERS+=	reverse_copy.h
427ALG_HEADERS+=	rotate.h
428ALG_HEADERS+=	rotate_copy.h
429ALG_HEADERS+=	sample.h
430ALG_HEADERS+=	search.h
431ALG_HEADERS+=	search_n.h
432ALG_HEADERS+=	set_difference.h
433ALG_HEADERS+=	set_intersection.h
434ALG_HEADERS+=	set_symmetric_difference.h
435ALG_HEADERS+=	set_union.h
436ALG_HEADERS+=	shift_left.h
437ALG_HEADERS+=	shift_right.h
438ALG_HEADERS+=	shuffle.h
439ALG_HEADERS+=	sift_down.h
440ALG_HEADERS+=	sort.h
441ALG_HEADERS+=	sort_heap.h
442ALG_HEADERS+=	stable_partition.h
443ALG_HEADERS+=	stable_sort.h
444ALG_HEADERS+=	swap_ranges.h
445ALG_HEADERS+=	transform.h
446ALG_HEADERS+=	uniform_random_bit_generator_adaptor.h
447ALG_HEADERS+=	unique.h
448ALG_HEADERS+=	unique_copy.h
449ALG_HEADERS+=	unwrap_iter.h
450ALG_HEADERS+=	unwrap_range.h
451ALG_HEADERS+=	upper_bound.h
452.for hdr in ${ALG_HEADERS}
453ALG+=		${HDRDIR}/__algorithm/${hdr}
454.endfor
455
456INCSGROUPS+=	BIT
457BITDIR=		${CXXINCLUDEDIR}/__bit
458BIT_HEADERS+=	bit_cast.h
459BIT_HEADERS+=	bit_ceil.h
460BIT_HEADERS+=	bit_floor.h
461BIT_HEADERS+=	bit_log2.h
462BIT_HEADERS+=	bit_width.h
463BIT_HEADERS+=	blsr.h
464BIT_HEADERS+=	byteswap.h
465BIT_HEADERS+=	countl.h
466BIT_HEADERS+=	countr.h
467BIT_HEADERS+=	endian.h
468BIT_HEADERS+=	has_single_bit.h
469BIT_HEADERS+=	popcount.h
470BIT_HEADERS+=	rotate.h
471.for hdr in ${BIT_HEADERS}
472BIT+=		${HDRDIR}/__bit/${hdr}
473.endfor
474
475INCSGROUPS+=	CHC
476CHCDIR=		${CXXINCLUDEDIR}/__charconv
477CHC_HEADERS+=	chars_format.h
478CHC_HEADERS+=	from_chars_result.h
479CHC_HEADERS+=	tables.h
480CHC_HEADERS+=	to_chars_base_10.h
481CHC_HEADERS+=	to_chars_result.h
482.for hdr in ${CHC_HEADERS}
483CHC+=		${HDRDIR}/__charconv/${hdr}
484.endfor
485
486INCSGROUPS+=	CHR
487CHRDIR=		${CXXINCLUDEDIR}/__chrono
488CHR_HEADERS+=	calendar.h
489CHR_HEADERS+=	convert_to_timespec.h
490CHR_HEADERS+=	convert_to_tm.h
491CHR_HEADERS+=	day.h
492CHR_HEADERS+=	duration.h
493CHR_HEADERS+=	file_clock.h
494CHR_HEADERS+=	formatter.h
495CHR_HEADERS+=	hh_mm_ss.h
496CHR_HEADERS+=	high_resolution_clock.h
497CHR_HEADERS+=	literals.h
498CHR_HEADERS+=	month.h
499CHR_HEADERS+=	month_weekday.h
500CHR_HEADERS+=	monthday.h
501CHR_HEADERS+=	ostream.h
502CHR_HEADERS+=	parser_std_format_spec.h
503CHR_HEADERS+=	statically_widen.h
504CHR_HEADERS+=	steady_clock.h
505CHR_HEADERS+=	system_clock.h
506CHR_HEADERS+=	time_point.h
507CHR_HEADERS+=	weekday.h
508CHR_HEADERS+=	year.h
509CHR_HEADERS+=	year_month.h
510CHR_HEADERS+=	year_month_day.h
511CHR_HEADERS+=	year_month_weekday.h
512.for hdr in ${CHR_HEADERS}
513CHR+=		${HDRDIR}/__chrono/${hdr}
514.endfor
515
516INCSGROUPS+=	CMP
517CMPDIR=		${CXXINCLUDEDIR}/__compare
518CMP_HEADERS+=	common_comparison_category.h
519CMP_HEADERS+=	compare_partial_order_fallback.h
520CMP_HEADERS+=	compare_strong_order_fallback.h
521CMP_HEADERS+=	compare_three_way.h
522CMP_HEADERS+=	compare_three_way_result.h
523CMP_HEADERS+=	compare_weak_order_fallback.h
524CMP_HEADERS+=	is_eq.h
525CMP_HEADERS+=	ordering.h
526CMP_HEADERS+=	partial_order.h
527CMP_HEADERS+=	strong_order.h
528CMP_HEADERS+=	synth_three_way.h
529CMP_HEADERS+=	three_way_comparable.h
530CMP_HEADERS+=	weak_order.h
531.for hdr in ${CMP_HEADERS}
532CMP+=		${HDRDIR}/__compare/${hdr}
533.endfor
534
535INCSGROUPS+=	CON
536CONDIR=		${CXXINCLUDEDIR}/__concepts
537CON_HEADERS+=	arithmetic.h
538CON_HEADERS+=	assignable.h
539CON_HEADERS+=	boolean_testable.h
540CON_HEADERS+=	class_or_enum.h
541CON_HEADERS+=	common_reference_with.h
542CON_HEADERS+=	common_with.h
543CON_HEADERS+=	constructible.h
544CON_HEADERS+=	convertible_to.h
545CON_HEADERS+=	copyable.h
546CON_HEADERS+=	derived_from.h
547CON_HEADERS+=	destructible.h
548CON_HEADERS+=	different_from.h
549CON_HEADERS+=	equality_comparable.h
550CON_HEADERS+=	invocable.h
551CON_HEADERS+=	movable.h
552CON_HEADERS+=	predicate.h
553CON_HEADERS+=	regular.h
554CON_HEADERS+=	relation.h
555CON_HEADERS+=	same_as.h
556CON_HEADERS+=	semiregular.h
557CON_HEADERS+=	swappable.h
558CON_HEADERS+=	totally_ordered.h
559.for hdr in ${CON_HEADERS}
560CON+=		${HDRDIR}/__concepts/${hdr}
561.endfor
562
563INCSGROUPS+=	COR
564CORDIR=		${CXXINCLUDEDIR}/__coroutine
565COR_HEADERS+=	coroutine_handle.h
566COR_HEADERS+=	coroutine_traits.h
567COR_HEADERS+=	noop_coroutine_handle.h
568COR_HEADERS+=	trivial_awaitables.h
569.for hdr in ${COR_HEADERS}
570COR+=		${HDRDIR}/__coroutine/${hdr}
571.endfor
572
573INCSGROUPS+=	DBG
574DBGDIR=		${CXXINCLUDEDIR}/__debug_utils
575DBG_HEADERS+=	randomize_range.h
576.for hdr in ${DBG_HEADERS}
577DBG+=		${HDRDIR}/__debug_utils/${hdr}
578.endfor
579
580INCSGROUPS+=	EXC
581EXCDIR=		${CXXINCLUDEDIR}/__expected
582EXC_HEADERS+=	bad_expected_access.h
583EXC_HEADERS+=	expected.h
584EXC_HEADERS+=	unexpect.h
585EXC_HEADERS+=	unexpected.h
586.for hdr in ${EXC_HEADERS}
587EXC+=		${HDRDIR}/__expected/${hdr}
588.endfor
589
590INCSGROUPS+=	FS
591FSDIR=		${CXXINCLUDEDIR}/__filesystem
592FS_HEADERS+=	copy_options.h
593FS_HEADERS+=	directory_entry.h
594FS_HEADERS+=	directory_iterator.h
595FS_HEADERS+=	directory_options.h
596FS_HEADERS+=	file_status.h
597FS_HEADERS+=	file_time_type.h
598FS_HEADERS+=	file_type.h
599FS_HEADERS+=	filesystem_error.h
600FS_HEADERS+=	operations.h
601FS_HEADERS+=	path.h
602FS_HEADERS+=	path_iterator.h
603FS_HEADERS+=	perm_options.h
604FS_HEADERS+=	perms.h
605FS_HEADERS+=	recursive_directory_iterator.h
606FS_HEADERS+=	space_info.h
607FS_HEADERS+=	u8path.h
608.for hdr in ${FS_HEADERS}
609FS+=		${HDRDIR}/__filesystem/${hdr}
610.endfor
611
612INCSGROUPS+=	FMT
613FMTDIR=		${CXXINCLUDEDIR}/__format
614FMT_HEADERS+=	buffer.h
615FMT_HEADERS+=	concepts.h
616FMT_HEADERS+=	container_adaptor.h
617FMT_HEADERS+=	enable_insertable.h
618FMT_HEADERS+=	escaped_output_table.h
619FMT_HEADERS+=	extended_grapheme_cluster_table.h
620FMT_HEADERS+=	format_arg.h
621FMT_HEADERS+=	format_arg_store.h
622FMT_HEADERS+=	format_args.h
623FMT_HEADERS+=	format_context.h
624FMT_HEADERS+=	format_error.h
625FMT_HEADERS+=	format_functions.h
626FMT_HEADERS+=	format_fwd.h
627FMT_HEADERS+=	format_parse_context.h
628FMT_HEADERS+=	format_string.h
629FMT_HEADERS+=	format_to_n_result.h
630FMT_HEADERS+=	formatter.h
631FMT_HEADERS+=	formatter_bool.h
632FMT_HEADERS+=	formatter_char.h
633FMT_HEADERS+=	formatter_floating_point.h
634FMT_HEADERS+=	formatter_integer.h
635FMT_HEADERS+=	formatter_integral.h
636FMT_HEADERS+=	formatter_output.h
637FMT_HEADERS+=	formatter_pointer.h
638FMT_HEADERS+=	formatter_string.h
639FMT_HEADERS+=	formatter_tuple.h
640FMT_HEADERS+=	parser_std_format_spec.h
641FMT_HEADERS+=	range_default_formatter.h
642FMT_HEADERS+=	range_formatter.h
643FMT_HEADERS+=	unicode.h
644.for hdr in ${FMT_HEADERS}
645FMT+=		${HDRDIR}/__format/${hdr}
646.endfor
647
648INCSGROUPS+=	FUN
649FUNDIR=		${CXXINCLUDEDIR}/__functional
650FUN_HEADERS+=	binary_function.h
651FUN_HEADERS+=	binary_negate.h
652FUN_HEADERS+=	bind.h
653FUN_HEADERS+=	bind_back.h
654FUN_HEADERS+=	bind_front.h
655FUN_HEADERS+=	binder1st.h
656FUN_HEADERS+=	binder2nd.h
657FUN_HEADERS+=	boyer_moore_searcher.h
658FUN_HEADERS+=	compose.h
659FUN_HEADERS+=	default_searcher.h
660FUN_HEADERS+=	function.h
661FUN_HEADERS+=	hash.h
662FUN_HEADERS+=	identity.h
663FUN_HEADERS+=	invoke.h
664FUN_HEADERS+=	is_transparent.h
665FUN_HEADERS+=	mem_fn.h
666FUN_HEADERS+=	mem_fun_ref.h
667FUN_HEADERS+=	not_fn.h
668FUN_HEADERS+=	operations.h
669FUN_HEADERS+=	perfect_forward.h
670FUN_HEADERS+=	pointer_to_binary_function.h
671FUN_HEADERS+=	pointer_to_unary_function.h
672FUN_HEADERS+=	ranges_operations.h
673FUN_HEADERS+=	reference_wrapper.h
674FUN_HEADERS+=	unary_function.h
675FUN_HEADERS+=	unary_negate.h
676FUN_HEADERS+=	unwrap_ref.h
677FUN_HEADERS+=	weak_result_type.h
678.for hdr in ${FUN_HEADERS}
679FUN+=		${HDRDIR}/__functional/${hdr}
680.endfor
681
682INCSGROUPS+=	FWD
683FWDDIR=		${CXXINCLUDEDIR}/__fwd
684FWD_HEADERS+=	array.h
685FWD_HEADERS+=	get.h
686FWD_HEADERS+=	hash.h
687FWD_HEADERS+=	memory_resource.h
688FWD_HEADERS+=	pair.h
689FWD_HEADERS+=	span.h
690FWD_HEADERS+=	string.h
691FWD_HEADERS+=	string_view.h
692FWD_HEADERS+=	subrange.h
693FWD_HEADERS+=	tuple.h
694.for hdr in ${FWD_HEADERS}
695FWD+=		${HDRDIR}/__fwd/${hdr}
696.endfor
697
698INCSGROUPS+=	IOS
699IOSDIR=		${CXXINCLUDEDIR}/__ios
700IOS_HEADERS+=	fpos.h
701.for hdr in ${IOS_HEADERS}
702IOS+=		${HDRDIR}/__ios/${hdr}
703.endfor
704
705INCSGROUPS+=	IT
706ITDIR=		${CXXINCLUDEDIR}/__iterator
707IT_HEADERS+=	access.h
708IT_HEADERS+=	advance.h
709IT_HEADERS+=	back_insert_iterator.h
710IT_HEADERS+=	bounded_iter.h
711IT_HEADERS+=	common_iterator.h
712IT_HEADERS+=	concepts.h
713IT_HEADERS+=	counted_iterator.h
714IT_HEADERS+=	data.h
715IT_HEADERS+=	default_sentinel.h
716IT_HEADERS+=	distance.h
717IT_HEADERS+=	empty.h
718IT_HEADERS+=	erase_if_container.h
719IT_HEADERS+=	front_insert_iterator.h
720IT_HEADERS+=	incrementable_traits.h
721IT_HEADERS+=	indirectly_comparable.h
722IT_HEADERS+=	insert_iterator.h
723IT_HEADERS+=	istream_iterator.h
724IT_HEADERS+=	istreambuf_iterator.h
725IT_HEADERS+=	iter_move.h
726IT_HEADERS+=	iter_swap.h
727IT_HEADERS+=	iterator.h
728IT_HEADERS+=	iterator_traits.h
729IT_HEADERS+=	iterator_with_data.h
730IT_HEADERS+=	mergeable.h
731IT_HEADERS+=	move_iterator.h
732IT_HEADERS+=	move_sentinel.h
733IT_HEADERS+=	next.h
734IT_HEADERS+=	ostream_iterator.h
735IT_HEADERS+=	ostreambuf_iterator.h
736IT_HEADERS+=	permutable.h
737IT_HEADERS+=	prev.h
738IT_HEADERS+=	projected.h
739IT_HEADERS+=	readable_traits.h
740IT_HEADERS+=	reverse_access.h
741IT_HEADERS+=	reverse_iterator.h
742IT_HEADERS+=	segmented_iterator.h
743IT_HEADERS+=	size.h
744IT_HEADERS+=	sortable.h
745IT_HEADERS+=	unreachable_sentinel.h
746IT_HEADERS+=	wrap_iter.h
747.for hdr in ${IT_HEADERS}
748IT+=		${HDRDIR}/__iterator/${hdr}
749.endfor
750
751INCSGROUPS+=	MEM
752MEMDIR=		${CXXINCLUDEDIR}/__memory
753MEM_HEADERS+=	addressof.h
754MEM_HEADERS+=	align.h
755MEM_HEADERS+=	allocate_at_least.h
756MEM_HEADERS+=	allocation_guard.h
757MEM_HEADERS+=	allocator.h
758MEM_HEADERS+=	allocator_arg_t.h
759MEM_HEADERS+=	allocator_destructor.h
760MEM_HEADERS+=	allocator_traits.h
761MEM_HEADERS+=	assume_aligned.h
762MEM_HEADERS+=	auto_ptr.h
763MEM_HEADERS+=	builtin_new_allocator.h
764MEM_HEADERS+=	compressed_pair.h
765MEM_HEADERS+=	concepts.h
766MEM_HEADERS+=	construct_at.h
767MEM_HEADERS+=	destruct_n.h
768MEM_HEADERS+=	pointer_traits.h
769MEM_HEADERS+=	ranges_construct_at.h
770MEM_HEADERS+=	ranges_uninitialized_algorithms.h
771MEM_HEADERS+=	raw_storage_iterator.h
772MEM_HEADERS+=	shared_ptr.h
773MEM_HEADERS+=	swap_allocator.h
774MEM_HEADERS+=	temp_value.h
775MEM_HEADERS+=	temporary_buffer.h
776MEM_HEADERS+=	uninitialized_algorithms.h
777MEM_HEADERS+=	unique_ptr.h
778MEM_HEADERS+=	uses_allocator.h
779MEM_HEADERS+=	uses_allocator_construction.h
780MEM_HEADERS+=	voidify.h
781.for hdr in ${MEM_HEADERS}
782MEM+=		${HDRDIR}/__memory/${hdr}
783.endfor
784
785INCSGROUPS+=	MER
786MERDIR=		${CXXINCLUDEDIR}/__memory_resource
787MER_HEADERS+=	memory_resource.h
788MER_HEADERS+=	monotonic_buffer_resource.h
789MER_HEADERS+=	polymorphic_allocator.h
790MER_HEADERS+=	pool_options.h
791MER_HEADERS+=	synchronized_pool_resource.h
792MER_HEADERS+=	unsynchronized_pool_resource.h
793.for hdr in ${MER_HEADERS}
794MER+=		${HDRDIR}/__memory_resource/${hdr}
795.endfor
796
797INCSGROUPS+=	NUM
798NUMDIR=		${CXXINCLUDEDIR}/__numeric
799NUM_HEADERS+=	accumulate.h
800NUM_HEADERS+=	adjacent_difference.h
801NUM_HEADERS+=	exclusive_scan.h
802NUM_HEADERS+=	gcd_lcm.h
803NUM_HEADERS+=	inclusive_scan.h
804NUM_HEADERS+=	inner_product.h
805NUM_HEADERS+=	iota.h
806NUM_HEADERS+=	midpoint.h
807NUM_HEADERS+=	partial_sum.h
808NUM_HEADERS+=	reduce.h
809NUM_HEADERS+=	transform_exclusive_scan.h
810NUM_HEADERS+=	transform_inclusive_scan.h
811NUM_HEADERS+=	transform_reduce.h
812.for hdr in ${NUM_HEADERS}
813NUM+=		${HDRDIR}/__numeric/${hdr}
814.endfor
815
816INCSGROUPS+=	RND
817RNDDIR=		${CXXINCLUDEDIR}/__random
818RND_HEADERS+=	bernoulli_distribution.h
819RND_HEADERS+=	binomial_distribution.h
820RND_HEADERS+=	cauchy_distribution.h
821RND_HEADERS+=	chi_squared_distribution.h
822RND_HEADERS+=	clamp_to_integral.h
823RND_HEADERS+=	default_random_engine.h
824RND_HEADERS+=	discard_block_engine.h
825RND_HEADERS+=	discrete_distribution.h
826RND_HEADERS+=	exponential_distribution.h
827RND_HEADERS+=	extreme_value_distribution.h
828RND_HEADERS+=	fisher_f_distribution.h
829RND_HEADERS+=	gamma_distribution.h
830RND_HEADERS+=	generate_canonical.h
831RND_HEADERS+=	geometric_distribution.h
832RND_HEADERS+=	independent_bits_engine.h
833RND_HEADERS+=	is_seed_sequence.h
834RND_HEADERS+=	is_valid.h
835RND_HEADERS+=	knuth_b.h
836RND_HEADERS+=	linear_congruential_engine.h
837RND_HEADERS+=	log2.h
838RND_HEADERS+=	lognormal_distribution.h
839RND_HEADERS+=	mersenne_twister_engine.h
840RND_HEADERS+=	negative_binomial_distribution.h
841RND_HEADERS+=	normal_distribution.h
842RND_HEADERS+=	piecewise_constant_distribution.h
843RND_HEADERS+=	piecewise_linear_distribution.h
844RND_HEADERS+=	poisson_distribution.h
845RND_HEADERS+=	random_device.h
846RND_HEADERS+=	ranlux.h
847RND_HEADERS+=	seed_seq.h
848RND_HEADERS+=	shuffle_order_engine.h
849RND_HEADERS+=	student_t_distribution.h
850RND_HEADERS+=	subtract_with_carry_engine.h
851RND_HEADERS+=	uniform_int_distribution.h
852RND_HEADERS+=	uniform_random_bit_generator.h
853RND_HEADERS+=	uniform_real_distribution.h
854RND_HEADERS+=	weibull_distribution.h
855.for hdr in ${RND_HEADERS}
856RND+=		${HDRDIR}/__random/${hdr}
857.endfor
858
859INCSGROUPS+=	RNG
860RNGDIR=		${CXXINCLUDEDIR}/__ranges
861RNG_HEADERS+=	access.h
862RNG_HEADERS+=	all.h
863RNG_HEADERS+=	as_rvalue_view.h
864RNG_HEADERS+=	common_view.h
865RNG_HEADERS+=	concepts.h
866RNG_HEADERS+=	copyable_box.h
867RNG_HEADERS+=	counted.h
868RNG_HEADERS+=	dangling.h
869RNG_HEADERS+=	data.h
870RNG_HEADERS+=	drop_view.h
871RNG_HEADERS+=	drop_while_view.h
872RNG_HEADERS+=	elements_view.h
873RNG_HEADERS+=	empty.h
874RNG_HEADERS+=	empty_view.h
875RNG_HEADERS+=	enable_borrowed_range.h
876RNG_HEADERS+=	enable_view.h
877RNG_HEADERS+=	filter_view.h
878RNG_HEADERS+=	iota_view.h
879RNG_HEADERS+=	istream_view.h
880RNG_HEADERS+=	join_view.h
881RNG_HEADERS+=	lazy_split_view.h
882RNG_HEADERS+=	non_propagating_cache.h
883RNG_HEADERS+=	owning_view.h
884RNG_HEADERS+=	range_adaptor.h
885RNG_HEADERS+=	rbegin.h
886RNG_HEADERS+=	ref_view.h
887RNG_HEADERS+=	rend.h
888RNG_HEADERS+=	reverse_view.h
889RNG_HEADERS+=	single_view.h
890RNG_HEADERS+=	size.h
891RNG_HEADERS+=	split_view.h
892RNG_HEADERS+=	subrange.h
893RNG_HEADERS+=	take_view.h
894RNG_HEADERS+=	take_while_view.h
895RNG_HEADERS+=	transform_view.h
896RNG_HEADERS+=	view_interface.h
897RNG_HEADERS+=	views.h
898RNG_HEADERS+=	zip_view.h
899.for hdr in ${RNG_HEADERS}
900RNG+=		${HDRDIR}/__ranges/${hdr}
901.endfor
902
903INCSGROUPS+=	STR
904STRDIR=		${CXXINCLUDEDIR}/__string
905STR_HEADERS+=	char_traits.h
906STR_HEADERS+=	extern_template_lists.h
907.for hdr in ${STR_HEADERS}
908STR+=		${HDRDIR}/__string/${hdr}
909.endfor
910
911INCSGROUPS+=	THR
912THRDIR=		${CXXINCLUDEDIR}/__thread
913THR_HEADERS+=	poll_with_backoff.h
914THR_HEADERS+=	timed_backoff_policy.h
915.for hdr in ${THR_HEADERS}
916THR+=		${HDRDIR}/__thread/${hdr}
917.endfor
918
919INCSGROUPS+=	TUP
920TUPDIR=		${CXXINCLUDEDIR}/__tuple_dir
921TUP_HEADERS+=	apply_cv.h
922TUP_HEADERS+=	make_tuple_types.h
923TUP_HEADERS+=	pair_like.h
924TUP_HEADERS+=	sfinae_helpers.h
925TUP_HEADERS+=	tuple_element.h
926TUP_HEADERS+=	tuple_indices.h
927TUP_HEADERS+=	tuple_like.h
928TUP_HEADERS+=	tuple_like_ext.h
929TUP_HEADERS+=	tuple_size.h
930TUP_HEADERS+=	tuple_types.h
931.for hdr in ${TUP_HEADERS}
932TUP+=		${HDRDIR}/__tuple_dir/${hdr}
933.endfor
934
935INCSGROUPS+=	TTR
936TTRDIR=		${CXXINCLUDEDIR}/__type_traits
937TTR_HEADERS+=	add_const.h
938TTR_HEADERS+=	add_cv.h
939TTR_HEADERS+=	add_lvalue_reference.h
940TTR_HEADERS+=	add_pointer.h
941TTR_HEADERS+=	add_rvalue_reference.h
942TTR_HEADERS+=	add_volatile.h
943TTR_HEADERS+=	aligned_storage.h
944TTR_HEADERS+=	aligned_union.h
945TTR_HEADERS+=	alignment_of.h
946TTR_HEADERS+=	apply_cv.h
947TTR_HEADERS+=	can_extract_key.h
948TTR_HEADERS+=	common_reference.h
949TTR_HEADERS+=	common_type.h
950TTR_HEADERS+=	conditional.h
951TTR_HEADERS+=	conjunction.h
952TTR_HEADERS+=	copy_cv.h
953TTR_HEADERS+=	copy_cvref.h
954TTR_HEADERS+=	decay.h
955TTR_HEADERS+=	dependent_type.h
956TTR_HEADERS+=	disjunction.h
957TTR_HEADERS+=	enable_if.h
958TTR_HEADERS+=	extent.h
959TTR_HEADERS+=	has_unique_object_representation.h
960TTR_HEADERS+=	has_virtual_destructor.h
961TTR_HEADERS+=	integral_constant.h
962TTR_HEADERS+=	is_abstract.h
963TTR_HEADERS+=	is_aggregate.h
964TTR_HEADERS+=	is_allocator.h
965TTR_HEADERS+=	is_always_bitcastable.h
966TTR_HEADERS+=	is_arithmetic.h
967TTR_HEADERS+=	is_array.h
968TTR_HEADERS+=	is_assignable.h
969TTR_HEADERS+=	is_base_of.h
970TTR_HEADERS+=	is_bounded_array.h
971TTR_HEADERS+=	is_callable.h
972TTR_HEADERS+=	is_char_like_type.h
973TTR_HEADERS+=	is_class.h
974TTR_HEADERS+=	is_compound.h
975TTR_HEADERS+=	is_const.h
976TTR_HEADERS+=	is_constant_evaluated.h
977TTR_HEADERS+=	is_constructible.h
978TTR_HEADERS+=	is_convertible.h
979TTR_HEADERS+=	is_copy_assignable.h
980TTR_HEADERS+=	is_copy_constructible.h
981TTR_HEADERS+=	is_core_convertible.h
982TTR_HEADERS+=	is_default_constructible.h
983TTR_HEADERS+=	is_destructible.h
984TTR_HEADERS+=	is_empty.h
985TTR_HEADERS+=	is_enum.h
986TTR_HEADERS+=	is_final.h
987TTR_HEADERS+=	is_floating_point.h
988TTR_HEADERS+=	is_function.h
989TTR_HEADERS+=	is_fundamental.h
990TTR_HEADERS+=	is_implicitly_default_constructible.h
991TTR_HEADERS+=	is_integral.h
992TTR_HEADERS+=	is_literal_type.h
993TTR_HEADERS+=	is_member_function_pointer.h
994TTR_HEADERS+=	is_member_object_pointer.h
995TTR_HEADERS+=	is_member_pointer.h
996TTR_HEADERS+=	is_move_assignable.h
997TTR_HEADERS+=	is_move_constructible.h
998TTR_HEADERS+=	is_nothrow_assignable.h
999TTR_HEADERS+=	is_nothrow_constructible.h
1000TTR_HEADERS+=	is_nothrow_convertible.h
1001TTR_HEADERS+=	is_nothrow_copy_assignable.h
1002TTR_HEADERS+=	is_nothrow_copy_constructible.h
1003TTR_HEADERS+=	is_nothrow_default_constructible.h
1004TTR_HEADERS+=	is_nothrow_destructible.h
1005TTR_HEADERS+=	is_nothrow_move_assignable.h
1006TTR_HEADERS+=	is_nothrow_move_constructible.h
1007TTR_HEADERS+=	is_null_pointer.h
1008TTR_HEADERS+=	is_object.h
1009TTR_HEADERS+=	is_pod.h
1010TTR_HEADERS+=	is_pointer.h
1011TTR_HEADERS+=	is_polymorphic.h
1012TTR_HEADERS+=	is_primary_template.h
1013TTR_HEADERS+=	is_reference.h
1014TTR_HEADERS+=	is_reference_wrapper.h
1015TTR_HEADERS+=	is_referenceable.h
1016TTR_HEADERS+=	is_same.h
1017TTR_HEADERS+=	is_scalar.h
1018TTR_HEADERS+=	is_scoped_enum.h
1019TTR_HEADERS+=	is_signed.h
1020TTR_HEADERS+=	is_signed_integer.h
1021TTR_HEADERS+=	is_specialization.h
1022TTR_HEADERS+=	is_standard_layout.h
1023TTR_HEADERS+=	is_swappable.h
1024TTR_HEADERS+=	is_trivial.h
1025TTR_HEADERS+=	is_trivially_assignable.h
1026TTR_HEADERS+=	is_trivially_constructible.h
1027TTR_HEADERS+=	is_trivially_copy_assignable.h
1028TTR_HEADERS+=	is_trivially_copy_constructible.h
1029TTR_HEADERS+=	is_trivially_copyable.h
1030TTR_HEADERS+=	is_trivially_default_constructible.h
1031TTR_HEADERS+=	is_trivially_destructible.h
1032TTR_HEADERS+=	is_trivially_move_assignable.h
1033TTR_HEADERS+=	is_trivially_move_constructible.h
1034TTR_HEADERS+=	is_unbounded_array.h
1035TTR_HEADERS+=	is_union.h
1036TTR_HEADERS+=	is_unsigned.h
1037TTR_HEADERS+=	is_unsigned_integer.h
1038TTR_HEADERS+=	is_valid_expansion.h
1039TTR_HEADERS+=	is_void.h
1040TTR_HEADERS+=	is_volatile.h
1041TTR_HEADERS+=	lazy.h
1042TTR_HEADERS+=	make_32_64_or_128_bit.h
1043TTR_HEADERS+=	make_const_lvalue_ref.h
1044TTR_HEADERS+=	make_signed.h
1045TTR_HEADERS+=	make_unsigned.h
1046TTR_HEADERS+=	maybe_const.h
1047TTR_HEADERS+=	nat.h
1048TTR_HEADERS+=	negation.h
1049TTR_HEADERS+=	noexcept_move_assign_container.h
1050TTR_HEADERS+=	promote.h
1051TTR_HEADERS+=	rank.h
1052TTR_HEADERS+=	remove_all_extents.h
1053TTR_HEADERS+=	remove_const.h
1054TTR_HEADERS+=	remove_const_ref.h
1055TTR_HEADERS+=	remove_cv.h
1056TTR_HEADERS+=	remove_cvref.h
1057TTR_HEADERS+=	remove_extent.h
1058TTR_HEADERS+=	remove_pointer.h
1059TTR_HEADERS+=	remove_reference.h
1060TTR_HEADERS+=	remove_volatile.h
1061TTR_HEADERS+=	result_of.h
1062TTR_HEADERS+=	strip_signature.h
1063TTR_HEADERS+=	type_identity.h
1064TTR_HEADERS+=	type_list.h
1065TTR_HEADERS+=	underlying_type.h
1066TTR_HEADERS+=	void_t.h
1067.for hdr in ${TTR_HEADERS}
1068TTR+=		${HDRDIR}/__type_traits/${hdr}
1069.endfor
1070
1071INCSGROUPS+=	UTL
1072UTLDIR=		${CXXINCLUDEDIR}/__utility
1073UTL_HEADERS+=	as_const.h
1074UTL_HEADERS+=	auto_cast.h
1075UTL_HEADERS+=	cmp.h
1076UTL_HEADERS+=	convert_to_integral.h
1077UTL_HEADERS+=	declval.h
1078UTL_HEADERS+=	exception_guard.h
1079UTL_HEADERS+=	exchange.h
1080UTL_HEADERS+=	forward.h
1081UTL_HEADERS+=	forward_like.h
1082UTL_HEADERS+=	in_place.h
1083UTL_HEADERS+=	integer_sequence.h
1084UTL_HEADERS+=	move.h
1085UTL_HEADERS+=	pair.h
1086UTL_HEADERS+=	piecewise_construct.h
1087UTL_HEADERS+=	priority_tag.h
1088UTL_HEADERS+=	rel_ops.h
1089UTL_HEADERS+=	swap.h
1090UTL_HEADERS+=	to_underlying.h
1091UTL_HEADERS+=	unreachable.h
1092.for hdr in ${UTL_HEADERS}
1093UTL+=		${HDRDIR}/__utility/${hdr}
1094.endfor
1095
1096INCSGROUPS+=	VAR
1097VARDIR=	${CXXINCLUDEDIR}/__variant
1098VAR_HEADERS+=	monostate.h
1099.for hdr in ${VAR_HEADERS}
1100VAR+=		${HDRDIR}/__variant/${hdr}
1101.endfor
1102
1103INCSGROUPS+=	EXP
1104EXPDIR=		${CXXINCLUDEDIR}/experimental
1105EXP_HEADERS+=	__config
1106EXP_HEADERS+=	__memory
1107EXP_HEADERS+=	algorithm
1108EXP_HEADERS+=	coroutine
1109EXP_HEADERS+=	deque
1110EXP_HEADERS+=	forward_list
1111EXP_HEADERS+=	functional
1112EXP_HEADERS+=	iterator
1113EXP_HEADERS+=	list
1114EXP_HEADERS+=	map
1115EXP_HEADERS+=	memory_resource
1116EXP_HEADERS+=	propagate_const
1117EXP_HEADERS+=	regex
1118EXP_HEADERS+=	set
1119EXP_HEADERS+=	simd
1120EXP_HEADERS+=	string
1121EXP_HEADERS+=	type_traits
1122EXP_HEADERS+=	unordered_map
1123EXP_HEADERS+=	unordered_set
1124EXP_HEADERS+=	utility
1125EXP_HEADERS+=	vector
1126.for hdr in ${EXP_HEADERS}
1127EXP+=		${HDRDIR}/experimental/${hdr}
1128.endfor
1129
1130INCSGROUPS+=	EXT
1131EXTDIR=		${CXXINCLUDEDIR}/ext
1132EXT_HEADERS+=	__hash
1133EXT_HEADERS+=	hash_map
1134EXT_HEADERS+=	hash_set
1135.for hdr in ${EXT_HEADERS}
1136EXT+=		${HDRDIR}/ext/${hdr}
1137.endfor
1138
1139.include <bsd.lib.mk>
1140