xref: /freebsd/lib/libc++/Makefile (revision bc9e19dce0abee80750e6fa04aaf979873bfe0d2)
1SHLIBDIR?=	/lib
2
3.include <src.opts.mk>
4
5PACKAGE=	clibs
6_LIBCXXRTDIR=	${SRCTOP}/contrib/libcxxrt
7HDRDIR=		${SRCTOP}/contrib/llvm-project/libcxx/include
8SRCDIR=		${SRCTOP}/contrib/llvm-project/libcxx/src
9CXXINCLUDEDIR=	${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
10
11.PATH: ${SRCDIR}
12
13LIB=		c++
14SHLIB_MAJOR=	1
15SHLIB_LDSCRIPT=	libc++.ldscript
16
17SRCS+=		algorithm.cpp
18SRCS+=		any.cpp
19SRCS+=		atomic.cpp
20SRCS+=		barrier.cpp
21SRCS+=		bind.cpp
22SRCS+=		call_once.cpp
23SRCS+=		charconv.cpp
24SRCS+=		chrono.cpp
25SRCS+=		condition_variable.cpp
26SRCS+=		condition_variable_destructor.cpp
27SRCS+=		error_category.cpp
28SRCS+=		exception.cpp
29SRCS+=		expected.cpp
30SRCS+=		filesystem/directory_entry.cpp
31SRCS+=		filesystem/directory_iterator.cpp
32SRCS+=		filesystem/filesystem_clock.cpp
33SRCS+=		filesystem/filesystem_error.cpp
34SRCS+=		filesystem/int128_builtins.cpp
35SRCS+=		filesystem/operations.cpp
36SRCS+=		filesystem/path.cpp
37SRCS+=		fstream.cpp
38SRCS+=		functional.cpp
39SRCS+=		future.cpp
40SRCS+=		hash.cpp
41SRCS+=		ios.cpp
42SRCS+=		ios.instantiations.cpp
43SRCS+=		iostream.cpp
44SRCS+=		legacy_pointer_safety.cpp
45SRCS+=		locale.cpp
46SRCS+=		memory.cpp
47SRCS+=		memory_resource.cpp
48SRCS+=		mutex.cpp
49SRCS+=		mutex_destructor.cpp
50SRCS+=		new.cpp
51SRCS+=		new_handler.cpp
52SRCS+=		new_helpers.cpp
53SRCS+=		optional.cpp
54SRCS+=		ostream.cpp
55SRCS+=		print.cpp
56SRCS+=		random.cpp
57SRCS+=		random_shuffle.cpp
58SRCS+=		regex.cpp
59SRCS+=		ryu/d2fixed.cpp
60SRCS+=		ryu/d2s.cpp
61SRCS+=		ryu/f2s.cpp
62SRCS+=		shared_mutex.cpp
63SRCS+=		stdexcept.cpp
64SRCS+=		string.cpp
65SRCS+=		strstream.cpp
66SRCS+=		system_error.cpp
67SRCS+=		thread.cpp
68SRCS+=		typeinfo.cpp
69SRCS+=		valarray.cpp
70SRCS+=		variant.cpp
71SRCS+=		vector.cpp
72SRCS+=		verbose_abort.cpp
73
74CXXRT_SRCS+=	auxhelper.cc
75CXXRT_SRCS+=	dynamic_cast.cc
76CXXRT_SRCS+=	exception.cc
77CXXRT_SRCS+=	guard.cc
78CXXRT_SRCS+=	libelftc_dem_gnu3.c
79CXXRT_SRCS+=	memory.cc
80CXXRT_SRCS+=	stdexcept.cc
81CXXRT_SRCS+=	terminate.cc
82CXXRT_SRCS+=	typeinfo.cc
83
84.for _S in ${CXXRT_SRCS}
85CLEANFILES+=	cxxrt_${_S}
86STATICOBJS+=	cxxrt_${_S:R}.o
87cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
88	ln -sf ${.ALLSRC} ${.TARGET}
89.endfor
90
91WARNS?=		0
92CFLAGS+=	-isystem ${SRCDIR}
93CFLAGS+=	-isystem ${.CURDIR}
94CFLAGS+=	-isystem ${HDRDIR}
95CFLAGS+=	-isystem ${_LIBCXXRTDIR}
96CFLAGS+=	-nostdinc++
97CFLAGS+=	-nostdlib
98CFLAGS+=	-D_LIBCPP_BUILDING_LIBRARY
99CFLAGS+=	-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
100CFLAGS+=	-D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES
101CFLAGS+=	-DLIBCXXRT
102CFLAGS+=	-fdata-sections
103CFLAGS+=	-ffunction-sections
104CFLAGS+=	-fno-semantic-interposition
105CFLAGS+=	-fvisibility-inlines-hidden
106CFLAGS+=	-fvisibility=hidden
107
108.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} < 130000
109# NOTE: gcc 12 cannot correctly compile all libc++'s C++23 code. To temporarily
110# support gcc 12, compile libc++ in C++20 mode, but this will leave out any
111# C++23 features.
112CXXSTD?=	c++20
113.else
114CXXSTD?=	c++23
115.endif
116
117LIBADD+=	cxxrt
118
119INCSGROUPS+=	STD
120STDDIR=		${CXXINCLUDEDIR}
121STD_HEADERS+=	__assert
122STD_HEADERS+=	__bit_reference
123STD_HEADERS+=	__config
124STD_HEADERS+=	__hash_table
125STD_HEADERS+=	__locale
126STD_HEADERS+=	__mbstate_t.h
127STD_HEADERS+=	__node_handle
128STD_HEADERS+=	__split_buffer
129STD_HEADERS+=	__std_clang_module
130STD_HEADERS+=	__std_mbstate_t.h
131STD_HEADERS+=	__tree
132STD_HEADERS+=	__undef_macros
133STD_HEADERS+=	__verbose_abort
134STD_HEADERS+=	algorithm
135STD_HEADERS+=	any
136STD_HEADERS+=	array
137STD_HEADERS+=	atomic
138STD_HEADERS+=	barrier
139STD_HEADERS+=	bit
140STD_HEADERS+=	bitset
141STD_HEADERS+=	cassert
142STD_HEADERS+=	ccomplex
143STD_HEADERS+=	cctype
144STD_HEADERS+=	cerrno
145STD_HEADERS+=	cfenv
146STD_HEADERS+=	cfloat
147STD_HEADERS+=	charconv
148STD_HEADERS+=	chrono
149STD_HEADERS+=	cinttypes
150STD_HEADERS+=	ciso646
151STD_HEADERS+=	climits
152STD_HEADERS+=	clocale
153STD_HEADERS+=	cmath
154STD_HEADERS+=	codecvt
155STD_HEADERS+=	compare
156STD_HEADERS+=	complex
157STD_HEADERS+=	complex.h
158STD_HEADERS+=	concepts
159STD_HEADERS+=	condition_variable
160STD_HEADERS+=	coroutine
161STD_HEADERS+=	csetjmp
162STD_HEADERS+=	csignal
163STD_HEADERS+=	cstdarg
164STD_HEADERS+=	cstdbool
165STD_HEADERS+=	cstddef
166STD_HEADERS+=	cstdint
167STD_HEADERS+=	cstdio
168STD_HEADERS+=	cstdlib
169STD_HEADERS+=	cstring
170STD_HEADERS+=	ctgmath
171STD_HEADERS+=	ctime
172STD_HEADERS+=	ctype.h
173STD_HEADERS+=	cuchar
174STD_HEADERS+=	cwchar
175STD_HEADERS+=	cwctype
176STD_HEADERS+=	deque
177STD_HEADERS+=	errno.h
178STD_HEADERS+=	exception
179STD_HEADERS+=	execution
180STD_HEADERS+=	expected
181STD_HEADERS+=	fenv.h
182STD_HEADERS+=	filesystem
183STD_HEADERS+=	float.h
184STD_HEADERS+=	format
185STD_HEADERS+=	forward_list
186STD_HEADERS+=	fstream
187STD_HEADERS+=	functional
188STD_HEADERS+=	future
189STD_HEADERS+=	initializer_list
190STD_HEADERS+=	inttypes.h
191STD_HEADERS+=	iomanip
192STD_HEADERS+=	ios
193STD_HEADERS+=	iosfwd
194STD_HEADERS+=	iostream
195STD_HEADERS+=	istream
196STD_HEADERS+=	iterator
197STD_HEADERS+=	latch
198STD_HEADERS+=	limits
199STD_HEADERS+=	list
200STD_HEADERS+=	locale
201STD_HEADERS+=	locale.h
202STD_HEADERS+=	map
203STD_HEADERS+=	math.h
204STD_HEADERS+=	mdspan
205STD_HEADERS+=	memory
206STD_HEADERS+=	memory_resource
207STD_HEADERS+=	module.modulemap
208STD_HEADERS+=	mutex
209STD_HEADERS+=	new
210STD_HEADERS+=	numbers
211STD_HEADERS+=	numeric
212STD_HEADERS+=	optional
213STD_HEADERS+=	ostream
214STD_HEADERS+=	print
215STD_HEADERS+=	queue
216STD_HEADERS+=	random
217STD_HEADERS+=	ranges
218STD_HEADERS+=	ratio
219STD_HEADERS+=	regex
220STD_HEADERS+=	scoped_allocator
221STD_HEADERS+=	semaphore
222STD_HEADERS+=	set
223STD_HEADERS+=	shared_mutex
224STD_HEADERS+=	source_location
225STD_HEADERS+=	span
226STD_HEADERS+=	sstream
227STD_HEADERS+=	stack
228STD_HEADERS+=	stdatomic.h
229STD_HEADERS+=	stdbool.h
230STD_HEADERS+=	stddef.h
231STD_HEADERS+=	stdexcept
232STD_HEADERS+=	stdint.h
233STD_HEADERS+=	stdio.h
234STD_HEADERS+=	stdlib.h
235STD_HEADERS+=	stop_token
236STD_HEADERS+=	streambuf
237STD_HEADERS+=	string
238STD_HEADERS+=	string.h
239STD_HEADERS+=	string_view
240STD_HEADERS+=	strstream
241STD_HEADERS+=	syncstream
242STD_HEADERS+=	system_error
243STD_HEADERS+=	tgmath.h
244STD_HEADERS+=	thread
245STD_HEADERS+=	tuple
246STD_HEADERS+=	type_traits
247STD_HEADERS+=	typeindex
248STD_HEADERS+=	typeinfo
249STD_HEADERS+=	uchar.h
250STD_HEADERS+=	unordered_map
251STD_HEADERS+=	unordered_set
252STD_HEADERS+=	utility
253STD_HEADERS+=	valarray
254STD_HEADERS+=	variant
255STD_HEADERS+=	vector
256STD_HEADERS+=	version
257STD_HEADERS+=	wchar.h
258STD_HEADERS+=	wctype.h
259.for hdr in ${STD_HEADERS}
260STD+=		${HDRDIR}/${hdr}
261.endfor
262
263# Generated by CMake as of libc++ 18.
264STD+=		${.CURDIR}/__assertion_handler
265
266# Generated by CMake as of libc++ 13.
267STD+=		${.CURDIR}/__config_site
268
269# Generated by CMake as of libc++ 19.
270STD_HEADERS+=	${.CURDIR}/libcxx.imp
271
272RT_HEADERS+=	cxxabi.h
273.for hdr in ${RT_HEADERS}
274STD+=		${_LIBCXXRTDIR}/${hdr}
275.endfor
276
277INCSGROUPS+=	ALG
278ALGDIR=		${CXXINCLUDEDIR}/__algorithm
279ALG_HEADERS+=	adjacent_find.h
280ALG_HEADERS+=	all_of.h
281ALG_HEADERS+=	any_of.h
282ALG_HEADERS+=	binary_search.h
283ALG_HEADERS+=	clamp.h
284ALG_HEADERS+=	comp.h
285ALG_HEADERS+=	comp_ref_type.h
286ALG_HEADERS+=	copy.h
287ALG_HEADERS+=	copy_backward.h
288ALG_HEADERS+=	copy_if.h
289ALG_HEADERS+=	copy_move_common.h
290ALG_HEADERS+=	copy_n.h
291ALG_HEADERS+=	count.h
292ALG_HEADERS+=	count_if.h
293ALG_HEADERS+=	equal.h
294ALG_HEADERS+=	equal_range.h
295ALG_HEADERS+=	fill.h
296ALG_HEADERS+=	fill_n.h
297ALG_HEADERS+=	find.h
298ALG_HEADERS+=	find_end.h
299ALG_HEADERS+=	find_first_of.h
300ALG_HEADERS+=	find_if.h
301ALG_HEADERS+=	find_if_not.h
302ALG_HEADERS+=	find_segment_if.h
303ALG_HEADERS+=	fold.h
304ALG_HEADERS+=	for_each.h
305ALG_HEADERS+=	for_each_n.h
306ALG_HEADERS+=	for_each_segment.h
307ALG_HEADERS+=	generate.h
308ALG_HEADERS+=	generate_n.h
309ALG_HEADERS+=	half_positive.h
310ALG_HEADERS+=	in_found_result.h
311ALG_HEADERS+=	in_fun_result.h
312ALG_HEADERS+=	in_in_out_result.h
313ALG_HEADERS+=	in_in_result.h
314ALG_HEADERS+=	in_out_out_result.h
315ALG_HEADERS+=	in_out_result.h
316ALG_HEADERS+=	includes.h
317ALG_HEADERS+=	inplace_merge.h
318ALG_HEADERS+=	is_heap.h
319ALG_HEADERS+=	is_heap_until.h
320ALG_HEADERS+=	is_partitioned.h
321ALG_HEADERS+=	is_permutation.h
322ALG_HEADERS+=	is_sorted.h
323ALG_HEADERS+=	is_sorted_until.h
324ALG_HEADERS+=	iter_swap.h
325ALG_HEADERS+=	iterator_operations.h
326ALG_HEADERS+=	lexicographical_compare.h
327ALG_HEADERS+=	lexicographical_compare_three_way.h
328ALG_HEADERS+=	lower_bound.h
329ALG_HEADERS+=	make_heap.h
330ALG_HEADERS+=	make_projected.h
331ALG_HEADERS+=	max.h
332ALG_HEADERS+=	max_element.h
333ALG_HEADERS+=	merge.h
334ALG_HEADERS+=	min.h
335ALG_HEADERS+=	min_element.h
336ALG_HEADERS+=	min_max_result.h
337ALG_HEADERS+=	minmax.h
338ALG_HEADERS+=	minmax_element.h
339ALG_HEADERS+=	mismatch.h
340ALG_HEADERS+=	move.h
341ALG_HEADERS+=	move_backward.h
342ALG_HEADERS+=	next_permutation.h
343ALG_HEADERS+=	none_of.h
344ALG_HEADERS+=	nth_element.h
345ALG_HEADERS+=	partial_sort.h
346ALG_HEADERS+=	partial_sort_copy.h
347ALG_HEADERS+=	partition.h
348ALG_HEADERS+=	partition_copy.h
349ALG_HEADERS+=	partition_point.h
350ALG_HEADERS+=	pop_heap.h
351ALG_HEADERS+=	prev_permutation.h
352ALG_HEADERS+=	pstl.h
353ALG_HEADERS+=	push_heap.h
354ALG_HEADERS+=	ranges_adjacent_find.h
355ALG_HEADERS+=	ranges_all_of.h
356ALG_HEADERS+=	ranges_any_of.h
357ALG_HEADERS+=	ranges_binary_search.h
358ALG_HEADERS+=	ranges_clamp.h
359ALG_HEADERS+=	ranges_contains.h
360ALG_HEADERS+=	ranges_contains_subrange.h
361ALG_HEADERS+=	ranges_copy.h
362ALG_HEADERS+=	ranges_copy_backward.h
363ALG_HEADERS+=	ranges_copy_if.h
364ALG_HEADERS+=	ranges_copy_n.h
365ALG_HEADERS+=	ranges_count.h
366ALG_HEADERS+=	ranges_count_if.h
367ALG_HEADERS+=	ranges_ends_with.h
368ALG_HEADERS+=	ranges_equal.h
369ALG_HEADERS+=	ranges_equal_range.h
370ALG_HEADERS+=	ranges_fill.h
371ALG_HEADERS+=	ranges_fill_n.h
372ALG_HEADERS+=	ranges_find.h
373ALG_HEADERS+=	ranges_find_end.h
374ALG_HEADERS+=	ranges_find_first_of.h
375ALG_HEADERS+=	ranges_find_if.h
376ALG_HEADERS+=	ranges_find_if_not.h
377ALG_HEADERS+=	ranges_find_last.h
378ALG_HEADERS+=	ranges_for_each.h
379ALG_HEADERS+=	ranges_for_each_n.h
380ALG_HEADERS+=	ranges_generate.h
381ALG_HEADERS+=	ranges_generate_n.h
382ALG_HEADERS+=	ranges_includes.h
383ALG_HEADERS+=	ranges_inplace_merge.h
384ALG_HEADERS+=	ranges_is_heap.h
385ALG_HEADERS+=	ranges_is_heap_until.h
386ALG_HEADERS+=	ranges_is_partitioned.h
387ALG_HEADERS+=	ranges_is_permutation.h
388ALG_HEADERS+=	ranges_is_sorted.h
389ALG_HEADERS+=	ranges_is_sorted_until.h
390ALG_HEADERS+=	ranges_iterator_concept.h
391ALG_HEADERS+=	ranges_lexicographical_compare.h
392ALG_HEADERS+=	ranges_lower_bound.h
393ALG_HEADERS+=	ranges_make_heap.h
394ALG_HEADERS+=	ranges_max.h
395ALG_HEADERS+=	ranges_max_element.h
396ALG_HEADERS+=	ranges_merge.h
397ALG_HEADERS+=	ranges_min.h
398ALG_HEADERS+=	ranges_min_element.h
399ALG_HEADERS+=	ranges_minmax.h
400ALG_HEADERS+=	ranges_minmax_element.h
401ALG_HEADERS+=	ranges_mismatch.h
402ALG_HEADERS+=	ranges_move.h
403ALG_HEADERS+=	ranges_move_backward.h
404ALG_HEADERS+=	ranges_next_permutation.h
405ALG_HEADERS+=	ranges_none_of.h
406ALG_HEADERS+=	ranges_nth_element.h
407ALG_HEADERS+=	ranges_partial_sort.h
408ALG_HEADERS+=	ranges_partial_sort_copy.h
409ALG_HEADERS+=	ranges_partition.h
410ALG_HEADERS+=	ranges_partition_copy.h
411ALG_HEADERS+=	ranges_partition_point.h
412ALG_HEADERS+=	ranges_pop_heap.h
413ALG_HEADERS+=	ranges_prev_permutation.h
414ALG_HEADERS+=	ranges_push_heap.h
415ALG_HEADERS+=	ranges_remove.h
416ALG_HEADERS+=	ranges_remove_copy.h
417ALG_HEADERS+=	ranges_remove_copy_if.h
418ALG_HEADERS+=	ranges_remove_if.h
419ALG_HEADERS+=	ranges_replace.h
420ALG_HEADERS+=	ranges_replace_copy.h
421ALG_HEADERS+=	ranges_replace_copy_if.h
422ALG_HEADERS+=	ranges_replace_if.h
423ALG_HEADERS+=	ranges_reverse.h
424ALG_HEADERS+=	ranges_reverse_copy.h
425ALG_HEADERS+=	ranges_rotate.h
426ALG_HEADERS+=	ranges_rotate_copy.h
427ALG_HEADERS+=	ranges_sample.h
428ALG_HEADERS+=	ranges_search.h
429ALG_HEADERS+=	ranges_search_n.h
430ALG_HEADERS+=	ranges_set_difference.h
431ALG_HEADERS+=	ranges_set_intersection.h
432ALG_HEADERS+=	ranges_set_symmetric_difference.h
433ALG_HEADERS+=	ranges_set_union.h
434ALG_HEADERS+=	ranges_shuffle.h
435ALG_HEADERS+=	ranges_sort.h
436ALG_HEADERS+=	ranges_sort_heap.h
437ALG_HEADERS+=	ranges_stable_partition.h
438ALG_HEADERS+=	ranges_stable_sort.h
439ALG_HEADERS+=	ranges_starts_with.h
440ALG_HEADERS+=	ranges_swap_ranges.h
441ALG_HEADERS+=	ranges_transform.h
442ALG_HEADERS+=	ranges_unique.h
443ALG_HEADERS+=	ranges_unique_copy.h
444ALG_HEADERS+=	ranges_upper_bound.h
445ALG_HEADERS+=	remove.h
446ALG_HEADERS+=	remove_copy.h
447ALG_HEADERS+=	remove_copy_if.h
448ALG_HEADERS+=	remove_if.h
449ALG_HEADERS+=	replace.h
450ALG_HEADERS+=	replace_copy.h
451ALG_HEADERS+=	replace_copy_if.h
452ALG_HEADERS+=	replace_if.h
453ALG_HEADERS+=	reverse.h
454ALG_HEADERS+=	reverse_copy.h
455ALG_HEADERS+=	rotate.h
456ALG_HEADERS+=	rotate_copy.h
457ALG_HEADERS+=	sample.h
458ALG_HEADERS+=	search.h
459ALG_HEADERS+=	search_n.h
460ALG_HEADERS+=	set_difference.h
461ALG_HEADERS+=	set_intersection.h
462ALG_HEADERS+=	set_symmetric_difference.h
463ALG_HEADERS+=	set_union.h
464ALG_HEADERS+=	shift_left.h
465ALG_HEADERS+=	shift_right.h
466ALG_HEADERS+=	shuffle.h
467ALG_HEADERS+=	sift_down.h
468ALG_HEADERS+=	simd_utils.h
469ALG_HEADERS+=	sort.h
470ALG_HEADERS+=	sort_heap.h
471ALG_HEADERS+=	stable_partition.h
472ALG_HEADERS+=	stable_sort.h
473ALG_HEADERS+=	swap_ranges.h
474ALG_HEADERS+=	three_way_comp_ref_type.h
475ALG_HEADERS+=	transform.h
476ALG_HEADERS+=	uniform_random_bit_generator_adaptor.h
477ALG_HEADERS+=	unique.h
478ALG_HEADERS+=	unique_copy.h
479ALG_HEADERS+=	unwrap_iter.h
480ALG_HEADERS+=	unwrap_range.h
481ALG_HEADERS+=	upper_bound.h
482.for hdr in ${ALG_HEADERS}
483ALG+=		${HDRDIR}/__algorithm/${hdr}
484.endfor
485
486INCSGROUPS+=	ATM
487ATMDIR=		${CXXINCLUDEDIR}/__atomic
488ATM_HEADERS+=	aliases.h
489ATM_HEADERS+=	atomic.h
490ATM_HEADERS+=	atomic_base.h
491ATM_HEADERS+=	atomic_flag.h
492ATM_HEADERS+=	atomic_init.h
493ATM_HEADERS+=	atomic_lock_free.h
494ATM_HEADERS+=	atomic_ref.h
495ATM_HEADERS+=	atomic_sync.h
496ATM_HEADERS+=	check_memory_order.h
497ATM_HEADERS+=	contention_t.h
498ATM_HEADERS+=	cxx_atomic_impl.h
499ATM_HEADERS+=	fence.h
500ATM_HEADERS+=	is_always_lock_free.h
501ATM_HEADERS+=	kill_dependency.h
502ATM_HEADERS+=	memory_order.h
503ATM_HEADERS+=	to_gcc_order.h
504.for hdr in ${ATM_HEADERS}
505ATM+=		${HDRDIR}/__atomic/${hdr}
506.endfor
507
508INCSGROUPS+=	BIT
509BITDIR=		${CXXINCLUDEDIR}/__bit
510BIT_HEADERS+=	bit_cast.h
511BIT_HEADERS+=	bit_ceil.h
512BIT_HEADERS+=	bit_floor.h
513BIT_HEADERS+=	bit_log2.h
514BIT_HEADERS+=	bit_width.h
515BIT_HEADERS+=	blsr.h
516BIT_HEADERS+=	byteswap.h
517BIT_HEADERS+=	countl.h
518BIT_HEADERS+=	countr.h
519BIT_HEADERS+=	endian.h
520BIT_HEADERS+=	has_single_bit.h
521BIT_HEADERS+=	invert_if.h
522BIT_HEADERS+=	popcount.h
523BIT_HEADERS+=	rotate.h
524.for hdr in ${BIT_HEADERS}
525BIT+=		${HDRDIR}/__bit/${hdr}
526.endfor
527
528INCSGROUPS+=	CHC
529CHCDIR=		${CXXINCLUDEDIR}/__charconv
530CHC_HEADERS+=	chars_format.h
531CHC_HEADERS+=	from_chars_integral.h
532CHC_HEADERS+=	from_chars_result.h
533CHC_HEADERS+=	tables.h
534CHC_HEADERS+=	to_chars.h
535CHC_HEADERS+=	to_chars_base_10.h
536CHC_HEADERS+=	to_chars_floating_point.h
537CHC_HEADERS+=	to_chars_integral.h
538CHC_HEADERS+=	to_chars_result.h
539CHC_HEADERS+=	traits.h
540.for hdr in ${CHC_HEADERS}
541CHC+=		${HDRDIR}/__charconv/${hdr}
542.endfor
543
544INCSGROUPS+=	CHR
545CHRDIR=		${CXXINCLUDEDIR}/__chrono
546CHR_HEADERS+=	calendar.h
547CHR_HEADERS+=	concepts.h
548CHR_HEADERS+=	convert_to_timespec.h
549CHR_HEADERS+=	convert_to_tm.h
550CHR_HEADERS+=	day.h
551CHR_HEADERS+=	duration.h
552CHR_HEADERS+=	exception.h
553CHR_HEADERS+=	file_clock.h
554CHR_HEADERS+=	formatter.h
555CHR_HEADERS+=	hh_mm_ss.h
556CHR_HEADERS+=	high_resolution_clock.h
557CHR_HEADERS+=	leap_second.h
558CHR_HEADERS+=	literals.h
559CHR_HEADERS+=	local_info.h
560CHR_HEADERS+=	month.h
561CHR_HEADERS+=	month_weekday.h
562CHR_HEADERS+=	monthday.h
563CHR_HEADERS+=	ostream.h
564CHR_HEADERS+=	parser_std_format_spec.h
565CHR_HEADERS+=	statically_widen.h
566CHR_HEADERS+=	steady_clock.h
567CHR_HEADERS+=	sys_info.h
568CHR_HEADERS+=	system_clock.h
569CHR_HEADERS+=	time_point.h
570CHR_HEADERS+=	time_zone.h
571CHR_HEADERS+=	time_zone_link.h
572CHR_HEADERS+=	tzdb.h
573CHR_HEADERS+=	tzdb_list.h
574CHR_HEADERS+=	weekday.h
575CHR_HEADERS+=	year.h
576CHR_HEADERS+=	year_month.h
577CHR_HEADERS+=	year_month_day.h
578CHR_HEADERS+=	year_month_weekday.h
579CHR_HEADERS+=	zoned_time.h
580.for hdr in ${CHR_HEADERS}
581CHR+=		${HDRDIR}/__chrono/${hdr}
582.endfor
583
584INCSGROUPS+=	CMP
585CMPDIR=		${CXXINCLUDEDIR}/__compare
586CMP_HEADERS+=	common_comparison_category.h
587CMP_HEADERS+=	compare_partial_order_fallback.h
588CMP_HEADERS+=	compare_strong_order_fallback.h
589CMP_HEADERS+=	compare_three_way.h
590CMP_HEADERS+=	compare_three_way_result.h
591CMP_HEADERS+=	compare_weak_order_fallback.h
592CMP_HEADERS+=	is_eq.h
593CMP_HEADERS+=	ordering.h
594CMP_HEADERS+=	partial_order.h
595CMP_HEADERS+=	strong_order.h
596CMP_HEADERS+=	synth_three_way.h
597CMP_HEADERS+=	three_way_comparable.h
598CMP_HEADERS+=	weak_order.h
599.for hdr in ${CMP_HEADERS}
600CMP+=		${HDRDIR}/__compare/${hdr}
601.endfor
602
603INCSGROUPS+=	CON
604CONDIR=		${CXXINCLUDEDIR}/__concepts
605CON_HEADERS+=	arithmetic.h
606CON_HEADERS+=	assignable.h
607CON_HEADERS+=	boolean_testable.h
608CON_HEADERS+=	class_or_enum.h
609CON_HEADERS+=	common_reference_with.h
610CON_HEADERS+=	common_with.h
611CON_HEADERS+=	constructible.h
612CON_HEADERS+=	convertible_to.h
613CON_HEADERS+=	copyable.h
614CON_HEADERS+=	derived_from.h
615CON_HEADERS+=	destructible.h
616CON_HEADERS+=	different_from.h
617CON_HEADERS+=	equality_comparable.h
618CON_HEADERS+=	invocable.h
619CON_HEADERS+=	movable.h
620CON_HEADERS+=	predicate.h
621CON_HEADERS+=	regular.h
622CON_HEADERS+=	relation.h
623CON_HEADERS+=	same_as.h
624CON_HEADERS+=	semiregular.h
625CON_HEADERS+=	swappable.h
626CON_HEADERS+=	totally_ordered.h
627.for hdr in ${CON_HEADERS}
628CON+=		${HDRDIR}/__concepts/${hdr}
629.endfor
630
631INCSGROUPS+=	CND
632CNDDIR=		${CXXINCLUDEDIR}/__condition_variable
633CND_HEADERS+=	condition_variable.h
634.for hdr in ${CND_HEADERS}
635CND+=		${HDRDIR}/__condition_variable/${hdr}
636.endfor
637
638INCSGROUPS+=	CNF
639CNFDIR=		${CXXINCLUDEDIR}/__configuration
640CNF_HEADERS+=	abi.h
641CNF_HEADERS+=	availability.h
642CNF_HEADERS+=	compiler.h
643CNF_HEADERS+=	language.h
644CNF_HEADERS+=	platform.h
645.for hdr in ${CNF_HEADERS}
646CNF+=		${HDRDIR}/__configuration/${hdr}
647.endfor
648
649INCSGROUPS+=	COR
650CORDIR=		${CXXINCLUDEDIR}/__coroutine
651COR_HEADERS+=	coroutine_handle.h
652COR_HEADERS+=	coroutine_traits.h
653COR_HEADERS+=	noop_coroutine_handle.h
654COR_HEADERS+=	trivial_awaitables.h
655.for hdr in ${COR_HEADERS}
656COR+=		${HDRDIR}/__coroutine/${hdr}
657.endfor
658
659INCSGROUPS+=	DBG
660DBGDIR=		${CXXINCLUDEDIR}/__debug_utils
661DBG_HEADERS+=	randomize_range.h
662DBG_HEADERS+=	sanitizers.h
663DBG_HEADERS+=	strict_weak_ordering_check.h
664.for hdr in ${DBG_HEADERS}
665DBG+=		${HDRDIR}/__debug_utils/${hdr}
666.endfor
667
668INCSGROUPS+=	EXC
669EXCDIR=		${CXXINCLUDEDIR}/__exception
670EXC_HEADERS+=	exception.h
671EXC_HEADERS+=	exception_ptr.h
672EXC_HEADERS+=	nested_exception.h
673EXC_HEADERS+=	operations.h
674EXC_HEADERS+=	terminate.h
675.for hdr in ${EXC_HEADERS}
676EXC+=		${HDRDIR}/__exception/${hdr}
677.endfor
678
679INCSGROUPS+=	EXD
680EXDDIR=		${CXXINCLUDEDIR}/__expected
681EXD_HEADERS+=	bad_expected_access.h
682EXD_HEADERS+=	expected.h
683EXD_HEADERS+=	unexpect.h
684EXD_HEADERS+=	unexpected.h
685.for hdr in ${EXD_HEADERS}
686EXD+=		${HDRDIR}/__expected/${hdr}
687.endfor
688
689INCSGROUPS+=	FS
690FSDIR=		${CXXINCLUDEDIR}/__filesystem
691FS_HEADERS+=	copy_options.h
692FS_HEADERS+=	directory_entry.h
693FS_HEADERS+=	directory_iterator.h
694FS_HEADERS+=	directory_options.h
695FS_HEADERS+=	file_status.h
696FS_HEADERS+=	file_time_type.h
697FS_HEADERS+=	file_type.h
698FS_HEADERS+=	filesystem_error.h
699FS_HEADERS+=	operations.h
700FS_HEADERS+=	path.h
701FS_HEADERS+=	path_iterator.h
702FS_HEADERS+=	perm_options.h
703FS_HEADERS+=	perms.h
704FS_HEADERS+=	recursive_directory_iterator.h
705FS_HEADERS+=	space_info.h
706FS_HEADERS+=	u8path.h
707.for hdr in ${FS_HEADERS}
708FS+=		${HDRDIR}/__filesystem/${hdr}
709.endfor
710
711INCSGROUPS+=	FMT
712FMTDIR=		${CXXINCLUDEDIR}/__format
713FMT_HEADERS+=	buffer.h
714FMT_HEADERS+=	concepts.h
715FMT_HEADERS+=	container_adaptor.h
716FMT_HEADERS+=	enable_insertable.h
717FMT_HEADERS+=	escaped_output_table.h
718FMT_HEADERS+=	extended_grapheme_cluster_table.h
719FMT_HEADERS+=	format_arg.h
720FMT_HEADERS+=	format_arg_store.h
721FMT_HEADERS+=	format_args.h
722FMT_HEADERS+=	format_context.h
723FMT_HEADERS+=	format_error.h
724FMT_HEADERS+=	format_functions.h
725FMT_HEADERS+=	format_parse_context.h
726FMT_HEADERS+=	format_string.h
727FMT_HEADERS+=	format_to_n_result.h
728FMT_HEADERS+=	formatter.h
729FMT_HEADERS+=	formatter_bool.h
730FMT_HEADERS+=	formatter_char.h
731FMT_HEADERS+=	formatter_floating_point.h
732FMT_HEADERS+=	formatter_integer.h
733FMT_HEADERS+=	formatter_integral.h
734FMT_HEADERS+=	formatter_output.h
735FMT_HEADERS+=	formatter_pointer.h
736FMT_HEADERS+=	formatter_string.h
737FMT_HEADERS+=	formatter_tuple.h
738FMT_HEADERS+=	indic_conjunct_break_table.h
739FMT_HEADERS+=	parser_std_format_spec.h
740FMT_HEADERS+=	range_default_formatter.h
741FMT_HEADERS+=	range_formatter.h
742FMT_HEADERS+=	unicode.h
743FMT_HEADERS+=	width_estimation_table.h
744FMT_HEADERS+=	write_escaped.h
745.for hdr in ${FMT_HEADERS}
746FMT+=		${HDRDIR}/__format/${hdr}
747.endfor
748
749INCSGROUPS+=	FUN
750FUNDIR=		${CXXINCLUDEDIR}/__functional
751FUN_HEADERS+=	binary_function.h
752FUN_HEADERS+=	binary_negate.h
753FUN_HEADERS+=	bind.h
754FUN_HEADERS+=	bind_back.h
755FUN_HEADERS+=	bind_front.h
756FUN_HEADERS+=	binder1st.h
757FUN_HEADERS+=	binder2nd.h
758FUN_HEADERS+=	boyer_moore_searcher.h
759FUN_HEADERS+=	compose.h
760FUN_HEADERS+=	default_searcher.h
761FUN_HEADERS+=	function.h
762FUN_HEADERS+=	hash.h
763FUN_HEADERS+=	identity.h
764FUN_HEADERS+=	invoke.h
765FUN_HEADERS+=	is_transparent.h
766FUN_HEADERS+=	mem_fn.h
767FUN_HEADERS+=	mem_fun_ref.h
768FUN_HEADERS+=	not_fn.h
769FUN_HEADERS+=	operations.h
770FUN_HEADERS+=	perfect_forward.h
771FUN_HEADERS+=	pointer_to_binary_function.h
772FUN_HEADERS+=	pointer_to_unary_function.h
773FUN_HEADERS+=	ranges_operations.h
774FUN_HEADERS+=	reference_wrapper.h
775FUN_HEADERS+=	unary_function.h
776FUN_HEADERS+=	unary_negate.h
777FUN_HEADERS+=	weak_result_type.h
778.for hdr in ${FUN_HEADERS}
779FUN+=		${HDRDIR}/__functional/${hdr}
780.endfor
781
782INCSGROUPS+=	FWD
783FWDDIR=		${CXXINCLUDEDIR}/__fwd
784FWD_HEADERS+=	array.h
785FWD_HEADERS+=	bit_reference.h
786FWD_HEADERS+=	complex.h
787FWD_HEADERS+=	deque.h
788FWD_HEADERS+=	format.h
789FWD_HEADERS+=	fstream.h
790FWD_HEADERS+=	functional.h
791FWD_HEADERS+=	ios.h
792FWD_HEADERS+=	istream.h
793FWD_HEADERS+=	mdspan.h
794FWD_HEADERS+=	memory.h
795FWD_HEADERS+=	memory_resource.h
796FWD_HEADERS+=	ostream.h
797FWD_HEADERS+=	pair.h
798FWD_HEADERS+=	queue.h
799FWD_HEADERS+=	span.h
800FWD_HEADERS+=	sstream.h
801FWD_HEADERS+=	stack.h
802FWD_HEADERS+=	streambuf.h
803FWD_HEADERS+=	string.h
804FWD_HEADERS+=	string_view.h
805FWD_HEADERS+=	subrange.h
806FWD_HEADERS+=	tuple.h
807FWD_HEADERS+=	vector.h
808.for hdr in ${FWD_HEADERS}
809FWD+=		${HDRDIR}/__fwd/${hdr}
810.endfor
811
812INCSGROUPS+=	IOS
813IOSDIR=		${CXXINCLUDEDIR}/__ios
814IOS_HEADERS+=	fpos.h
815.for hdr in ${IOS_HEADERS}
816IOS+=		${HDRDIR}/__ios/${hdr}
817.endfor
818
819INCSGROUPS+=	IT
820ITDIR=		${CXXINCLUDEDIR}/__iterator
821IT_HEADERS+=	access.h
822IT_HEADERS+=	advance.h
823IT_HEADERS+=	aliasing_iterator.h
824IT_HEADERS+=	back_insert_iterator.h
825IT_HEADERS+=	bounded_iter.h
826IT_HEADERS+=	common_iterator.h
827IT_HEADERS+=	concepts.h
828IT_HEADERS+=	counted_iterator.h
829IT_HEADERS+=	cpp17_iterator_concepts.h
830IT_HEADERS+=	data.h
831IT_HEADERS+=	default_sentinel.h
832IT_HEADERS+=	distance.h
833IT_HEADERS+=	empty.h
834IT_HEADERS+=	erase_if_container.h
835IT_HEADERS+=	front_insert_iterator.h
836IT_HEADERS+=	incrementable_traits.h
837IT_HEADERS+=	indirectly_comparable.h
838IT_HEADERS+=	insert_iterator.h
839IT_HEADERS+=	istream_iterator.h
840IT_HEADERS+=	istreambuf_iterator.h
841IT_HEADERS+=	iter_move.h
842IT_HEADERS+=	iter_swap.h
843IT_HEADERS+=	iterator.h
844IT_HEADERS+=	iterator_traits.h
845IT_HEADERS+=	iterator_with_data.h
846IT_HEADERS+=	mergeable.h
847IT_HEADERS+=	move_iterator.h
848IT_HEADERS+=	move_sentinel.h
849IT_HEADERS+=	next.h
850IT_HEADERS+=	ostream_iterator.h
851IT_HEADERS+=	ostreambuf_iterator.h
852IT_HEADERS+=	permutable.h
853IT_HEADERS+=	prev.h
854IT_HEADERS+=	projected.h
855IT_HEADERS+=	ranges_iterator_traits.h
856IT_HEADERS+=	readable_traits.h
857IT_HEADERS+=	reverse_access.h
858IT_HEADERS+=	reverse_iterator.h
859IT_HEADERS+=	segmented_iterator.h
860IT_HEADERS+=	size.h
861IT_HEADERS+=	sortable.h
862IT_HEADERS+=	unreachable_sentinel.h
863IT_HEADERS+=	wrap_iter.h
864.for hdr in ${IT_HEADERS}
865IT+=		${HDRDIR}/__iterator/${hdr}
866.endfor
867
868INCSGROUPS+=	LOC
869LOCDIR=		${CXXINCLUDEDIR}/__locale_dir
870LOC_HEADERS+=	locale_base_api.h
871.for hdr in ${LOC_HEADERS}
872LOC+=		${HDRDIR}/__locale_dir/${hdr}
873.endfor
874
875INCSGROUPS+=	LBA
876LBADIR=		${CXXINCLUDEDIR}/__locale_dir/locale_base_api
877LBA_HEADERS+=	bsd_locale_defaults.h
878LBA_HEADERS+=	bsd_locale_fallbacks.h
879LBA_HEADERS+=	locale_guard.h
880.for hdr in ${LBA_HEADERS}
881LBA+=		${HDRDIR}/__locale_dir/locale_base_api/${hdr}
882.endfor
883
884INCSGROUPS+=	MAT
885MATDIR=		${CXXINCLUDEDIR}/__math
886MAT_HEADERS+=	abs.h
887MAT_HEADERS+=	copysign.h
888MAT_HEADERS+=	error_functions.h
889MAT_HEADERS+=	exponential_functions.h
890MAT_HEADERS+=	fdim.h
891MAT_HEADERS+=	fma.h
892MAT_HEADERS+=	gamma.h
893MAT_HEADERS+=	hyperbolic_functions.h
894MAT_HEADERS+=	hypot.h
895MAT_HEADERS+=	inverse_hyperbolic_functions.h
896MAT_HEADERS+=	inverse_trigonometric_functions.h
897MAT_HEADERS+=	logarithms.h
898MAT_HEADERS+=	min_max.h
899MAT_HEADERS+=	modulo.h
900MAT_HEADERS+=	remainder.h
901MAT_HEADERS+=	roots.h
902MAT_HEADERS+=	rounding_functions.h
903MAT_HEADERS+=	special_functions.h
904MAT_HEADERS+=	traits.h
905MAT_HEADERS+=	trigonometric_functions.h
906.for hdr in ${MAT_HEADERS}
907MAT+=		${HDRDIR}/__math/${hdr}
908.endfor
909
910INCSGROUPS+=	MDS
911MDSDIR=		${CXXINCLUDEDIR}/__mdspan
912MDS_HEADERS+=	default_accessor.h
913MDS_HEADERS+=	extents.h
914MDS_HEADERS+=	layout_left.h
915MDS_HEADERS+=	layout_right.h
916MDS_HEADERS+=	layout_stride.h
917MDS_HEADERS+=	mdspan.h
918.for hdr in ${MDS_HEADERS}
919MDS+=		${HDRDIR}/__mdspan/${hdr}
920.endfor
921
922INCSGROUPS+=	MEM
923MEMDIR=		${CXXINCLUDEDIR}/__memory
924MEM_HEADERS+=	addressof.h
925MEM_HEADERS+=	align.h
926MEM_HEADERS+=	aligned_alloc.h
927MEM_HEADERS+=	allocate_at_least.h
928MEM_HEADERS+=	allocation_guard.h
929MEM_HEADERS+=	allocator.h
930MEM_HEADERS+=	allocator_arg_t.h
931MEM_HEADERS+=	allocator_destructor.h
932MEM_HEADERS+=	allocator_traits.h
933MEM_HEADERS+=	assume_aligned.h
934MEM_HEADERS+=	auto_ptr.h
935MEM_HEADERS+=	builtin_new_allocator.h
936MEM_HEADERS+=	compressed_pair.h
937MEM_HEADERS+=	concepts.h
938MEM_HEADERS+=	construct_at.h
939MEM_HEADERS+=	destruct_n.h
940MEM_HEADERS+=	inout_ptr.h
941MEM_HEADERS+=	out_ptr.h
942MEM_HEADERS+=	pointer_traits.h
943MEM_HEADERS+=	ranges_construct_at.h
944MEM_HEADERS+=	ranges_uninitialized_algorithms.h
945MEM_HEADERS+=	raw_storage_iterator.h
946MEM_HEADERS+=	shared_ptr.h
947MEM_HEADERS+=	swap_allocator.h
948MEM_HEADERS+=	temp_value.h
949MEM_HEADERS+=	temporary_buffer.h
950MEM_HEADERS+=	uninitialized_algorithms.h
951MEM_HEADERS+=	unique_ptr.h
952MEM_HEADERS+=	uses_allocator.h
953MEM_HEADERS+=	uses_allocator_construction.h
954MEM_HEADERS+=	voidify.h
955.for hdr in ${MEM_HEADERS}
956MEM+=		${HDRDIR}/__memory/${hdr}
957.endfor
958
959INCSGROUPS+=	MER
960MERDIR=		${CXXINCLUDEDIR}/__memory_resource
961MER_HEADERS+=	memory_resource.h
962MER_HEADERS+=	monotonic_buffer_resource.h
963MER_HEADERS+=	polymorphic_allocator.h
964MER_HEADERS+=	pool_options.h
965MER_HEADERS+=	synchronized_pool_resource.h
966MER_HEADERS+=	unsynchronized_pool_resource.h
967.for hdr in ${MER_HEADERS}
968MER+=		${HDRDIR}/__memory_resource/${hdr}
969.endfor
970
971INCSGROUPS+=	MUT
972MUTDIR=		${CXXINCLUDEDIR}/__mutex
973MUT_HEADERS+=	lock_guard.h
974MUT_HEADERS+=	mutex.h
975MUT_HEADERS+=	once_flag.h
976MUT_HEADERS+=	tag_types.h
977MUT_HEADERS+=	unique_lock.h
978.for hdr in ${MUT_HEADERS}
979MUT+=		${HDRDIR}/__mutex/${hdr}
980.endfor
981
982INCSGROUPS+=	NUM
983NUMDIR=		${CXXINCLUDEDIR}/__numeric
984NUM_HEADERS+=	accumulate.h
985NUM_HEADERS+=	adjacent_difference.h
986NUM_HEADERS+=	exclusive_scan.h
987NUM_HEADERS+=	gcd_lcm.h
988NUM_HEADERS+=	inclusive_scan.h
989NUM_HEADERS+=	inner_product.h
990NUM_HEADERS+=	iota.h
991NUM_HEADERS+=	midpoint.h
992NUM_HEADERS+=	partial_sum.h
993NUM_HEADERS+=	pstl.h
994NUM_HEADERS+=	reduce.h
995NUM_HEADERS+=	saturation_arithmetic.h
996NUM_HEADERS+=	transform_exclusive_scan.h
997NUM_HEADERS+=	transform_inclusive_scan.h
998NUM_HEADERS+=	transform_reduce.h
999.for hdr in ${NUM_HEADERS}
1000NUM+=		${HDRDIR}/__numeric/${hdr}
1001.endfor
1002
1003INCSGROUPS+=	OST
1004OSTDIR=		${CXXINCLUDEDIR}/__ostream
1005OST_HEADERS+=	basic_ostream.h
1006OST_HEADERS+=	print.h
1007.for hdr in ${OST_HEADERS}
1008OST+=		${HDRDIR}/__ostream/${hdr}
1009.endfor
1010
1011INCSGROUPS+=	PST
1012PSTDIR=		${CXXINCLUDEDIR}/__pstl
1013PST_HEADERS+=	backend.h
1014PST_HEADERS+=	backend_fwd.h
1015PST_HEADERS+=	dispatch.h
1016PST_HEADERS+=	handle_exception.h
1017.for hdr in ${PST_HEADERS}
1018PST+=		${HDRDIR}/__pstl/${hdr}
1019.endfor
1020
1021INCSGROUPS+=	PSB
1022PSBDIR=		${CXXINCLUDEDIR}/__pstl/backends
1023PSB_HEADERS+=	default.h
1024PSB_HEADERS+=	libdispatch.h
1025PSB_HEADERS+=	serial.h
1026PSB_HEADERS+=	std_thread.h
1027.for hdr in ${PSB_HEADERS}
1028PSB+=		${HDRDIR}/__pstl/backends/${hdr}
1029.endfor
1030
1031INCSGROUPS+=	PSC
1032PSCDIR=		${CXXINCLUDEDIR}/__pstl/cpu_algos
1033PSC_HEADERS+=	any_of.h
1034PSC_HEADERS+=	cpu_traits.h
1035PSC_HEADERS+=	fill.h
1036PSC_HEADERS+=	find_if.h
1037PSC_HEADERS+=	for_each.h
1038PSC_HEADERS+=	merge.h
1039PSC_HEADERS+=	stable_sort.h
1040PSC_HEADERS+=	transform.h
1041PSC_HEADERS+=	transform_reduce.h
1042.for hdr in ${PSC_HEADERS}
1043PSC+=		${HDRDIR}/__pstl/cpu_algos/${hdr}
1044.endfor
1045
1046INCSGROUPS+=	RND
1047RNDDIR=		${CXXINCLUDEDIR}/__random
1048RND_HEADERS+=	bernoulli_distribution.h
1049RND_HEADERS+=	binomial_distribution.h
1050RND_HEADERS+=	cauchy_distribution.h
1051RND_HEADERS+=	chi_squared_distribution.h
1052RND_HEADERS+=	clamp_to_integral.h
1053RND_HEADERS+=	default_random_engine.h
1054RND_HEADERS+=	discard_block_engine.h
1055RND_HEADERS+=	discrete_distribution.h
1056RND_HEADERS+=	exponential_distribution.h
1057RND_HEADERS+=	extreme_value_distribution.h
1058RND_HEADERS+=	fisher_f_distribution.h
1059RND_HEADERS+=	gamma_distribution.h
1060RND_HEADERS+=	generate_canonical.h
1061RND_HEADERS+=	geometric_distribution.h
1062RND_HEADERS+=	independent_bits_engine.h
1063RND_HEADERS+=	is_seed_sequence.h
1064RND_HEADERS+=	is_valid.h
1065RND_HEADERS+=	knuth_b.h
1066RND_HEADERS+=	linear_congruential_engine.h
1067RND_HEADERS+=	log2.h
1068RND_HEADERS+=	lognormal_distribution.h
1069RND_HEADERS+=	mersenne_twister_engine.h
1070RND_HEADERS+=	negative_binomial_distribution.h
1071RND_HEADERS+=	normal_distribution.h
1072RND_HEADERS+=	piecewise_constant_distribution.h
1073RND_HEADERS+=	piecewise_linear_distribution.h
1074RND_HEADERS+=	poisson_distribution.h
1075RND_HEADERS+=	random_device.h
1076RND_HEADERS+=	ranlux.h
1077RND_HEADERS+=	seed_seq.h
1078RND_HEADERS+=	shuffle_order_engine.h
1079RND_HEADERS+=	student_t_distribution.h
1080RND_HEADERS+=	subtract_with_carry_engine.h
1081RND_HEADERS+=	uniform_int_distribution.h
1082RND_HEADERS+=	uniform_random_bit_generator.h
1083RND_HEADERS+=	uniform_real_distribution.h
1084RND_HEADERS+=	weibull_distribution.h
1085.for hdr in ${RND_HEADERS}
1086RND+=		${HDRDIR}/__random/${hdr}
1087.endfor
1088
1089INCSGROUPS+=	RNG
1090RNGDIR=		${CXXINCLUDEDIR}/__ranges
1091RNG_HEADERS+=	access.h
1092RNG_HEADERS+=	all.h
1093RNG_HEADERS+=	as_rvalue_view.h
1094RNG_HEADERS+=	chunk_by_view.h
1095RNG_HEADERS+=	common_view.h
1096RNG_HEADERS+=	concepts.h
1097RNG_HEADERS+=	container_compatible_range.h
1098RNG_HEADERS+=	counted.h
1099RNG_HEADERS+=	dangling.h
1100RNG_HEADERS+=	data.h
1101RNG_HEADERS+=	drop_view.h
1102RNG_HEADERS+=	drop_while_view.h
1103RNG_HEADERS+=	elements_view.h
1104RNG_HEADERS+=	empty.h
1105RNG_HEADERS+=	empty_view.h
1106RNG_HEADERS+=	enable_borrowed_range.h
1107RNG_HEADERS+=	enable_view.h
1108RNG_HEADERS+=	filter_view.h
1109RNG_HEADERS+=	from_range.h
1110RNG_HEADERS+=	iota_view.h
1111RNG_HEADERS+=	istream_view.h
1112RNG_HEADERS+=	join_view.h
1113RNG_HEADERS+=	lazy_split_view.h
1114RNG_HEADERS+=	movable_box.h
1115RNG_HEADERS+=	non_propagating_cache.h
1116RNG_HEADERS+=	owning_view.h
1117RNG_HEADERS+=	range_adaptor.h
1118RNG_HEADERS+=	rbegin.h
1119RNG_HEADERS+=	ref_view.h
1120RNG_HEADERS+=	rend.h
1121RNG_HEADERS+=	repeat_view.h
1122RNG_HEADERS+=	reverse_view.h
1123RNG_HEADERS+=	single_view.h
1124RNG_HEADERS+=	size.h
1125RNG_HEADERS+=	split_view.h
1126RNG_HEADERS+=	subrange.h
1127RNG_HEADERS+=	take_view.h
1128RNG_HEADERS+=	take_while_view.h
1129RNG_HEADERS+=	to.h
1130RNG_HEADERS+=	transform_view.h
1131RNG_HEADERS+=	view_interface.h
1132RNG_HEADERS+=	views.h
1133RNG_HEADERS+=	zip_view.h
1134.for hdr in ${RNG_HEADERS}
1135RNG+=		${HDRDIR}/__ranges/${hdr}
1136.endfor
1137
1138INCSGROUPS+=	STT
1139STTDIR=		${CXXINCLUDEDIR}/__stop_token
1140STT_HEADERS+=	atomic_unique_lock.h
1141STT_HEADERS+=	intrusive_list_view.h
1142STT_HEADERS+=	intrusive_shared_ptr.h
1143STT_HEADERS+=	stop_callback.h
1144STT_HEADERS+=	stop_source.h
1145STT_HEADERS+=	stop_state.h
1146STT_HEADERS+=	stop_token.h
1147.for hdr in ${STT_HEADERS}
1148STT+=		${HDRDIR}/__stop_token/${hdr}
1149.endfor
1150
1151INCSGROUPS+=	STR
1152STRDIR=		${CXXINCLUDEDIR}/__string
1153STR_HEADERS+=	char_traits.h
1154STR_HEADERS+=	constexpr_c_functions.h
1155STR_HEADERS+=	extern_template_lists.h
1156.for hdr in ${STR_HEADERS}
1157STR+=		${HDRDIR}/__string/${hdr}
1158.endfor
1159
1160INCSGROUPS+=	SER
1161SERDIR=		${CXXINCLUDEDIR}/__system_error
1162SER_HEADERS+=	errc.h
1163SER_HEADERS+=	error_category.h
1164SER_HEADERS+=	error_code.h
1165SER_HEADERS+=	error_condition.h
1166SER_HEADERS+=	system_error.h
1167.for hdr in ${SER_HEADERS}
1168SER+=		${HDRDIR}/__system_error/${hdr}
1169.endfor
1170
1171INCSGROUPS+=	THR
1172THRDIR=		${CXXINCLUDEDIR}/__thread
1173THR_HEADERS+=	formatter.h
1174THR_HEADERS+=	id.h
1175THR_HEADERS+=	jthread.h
1176THR_HEADERS+=	poll_with_backoff.h
1177THR_HEADERS+=	support.h
1178THR_HEADERS+=	this_thread.h
1179THR_HEADERS+=	thread.h
1180THR_HEADERS+=	timed_backoff_policy.h
1181.for hdr in ${THR_HEADERS}
1182THR+=		${HDRDIR}/__thread/${hdr}
1183.endfor
1184
1185INCSGROUPS+=	THS
1186THSDIR=		${CXXINCLUDEDIR}/__thread/support
1187THS_HEADERS+=	c11.h
1188THS_HEADERS+=	external.h
1189THS_HEADERS+=	pthread.h
1190THS_HEADERS+=	windows.h
1191.for hdr in ${THS_HEADERS}
1192THS+=		${HDRDIR}/__thread/support/${hdr}
1193.endfor
1194
1195INCSGROUPS+=	TUP
1196TUPDIR=		${CXXINCLUDEDIR}/__tuple
1197TUP_HEADERS+=	find_index.h
1198TUP_HEADERS+=	ignore.h
1199TUP_HEADERS+=	make_tuple_types.h
1200TUP_HEADERS+=	sfinae_helpers.h
1201TUP_HEADERS+=	tuple_element.h
1202TUP_HEADERS+=	tuple_indices.h
1203TUP_HEADERS+=	tuple_like.h
1204TUP_HEADERS+=	tuple_like_ext.h
1205TUP_HEADERS+=	tuple_like_no_subrange.h
1206TUP_HEADERS+=	tuple_size.h
1207TUP_HEADERS+=	tuple_types.h
1208.for hdr in ${TUP_HEADERS}
1209TUP+=		${HDRDIR}/__tuple/${hdr}
1210.endfor
1211
1212INCSGROUPS+=	TTR
1213TTRDIR=		${CXXINCLUDEDIR}/__type_traits
1214TTR_HEADERS+=	add_const.h
1215TTR_HEADERS+=	add_cv.h
1216TTR_HEADERS+=	add_lvalue_reference.h
1217TTR_HEADERS+=	add_pointer.h
1218TTR_HEADERS+=	add_rvalue_reference.h
1219TTR_HEADERS+=	add_volatile.h
1220TTR_HEADERS+=	aligned_storage.h
1221TTR_HEADERS+=	aligned_union.h
1222TTR_HEADERS+=	alignment_of.h
1223TTR_HEADERS+=	can_extract_key.h
1224TTR_HEADERS+=	common_reference.h
1225TTR_HEADERS+=	common_type.h
1226TTR_HEADERS+=	conditional.h
1227TTR_HEADERS+=	conjunction.h
1228TTR_HEADERS+=	copy_cv.h
1229TTR_HEADERS+=	copy_cvref.h
1230TTR_HEADERS+=	datasizeof.h
1231TTR_HEADERS+=	decay.h
1232TTR_HEADERS+=	dependent_type.h
1233TTR_HEADERS+=	desugars_to.h
1234TTR_HEADERS+=	disjunction.h
1235TTR_HEADERS+=	enable_if.h
1236TTR_HEADERS+=	extent.h
1237TTR_HEADERS+=	has_unique_object_representation.h
1238TTR_HEADERS+=	has_virtual_destructor.h
1239TTR_HEADERS+=	integral_constant.h
1240TTR_HEADERS+=	invoke.h
1241TTR_HEADERS+=	is_abstract.h
1242TTR_HEADERS+=	is_aggregate.h
1243TTR_HEADERS+=	is_allocator.h
1244TTR_HEADERS+=	is_always_bitcastable.h
1245TTR_HEADERS+=	is_arithmetic.h
1246TTR_HEADERS+=	is_array.h
1247TTR_HEADERS+=	is_assignable.h
1248TTR_HEADERS+=	is_base_of.h
1249TTR_HEADERS+=	is_bounded_array.h
1250TTR_HEADERS+=	is_callable.h
1251TTR_HEADERS+=	is_char_like_type.h
1252TTR_HEADERS+=	is_class.h
1253TTR_HEADERS+=	is_compound.h
1254TTR_HEADERS+=	is_const.h
1255TTR_HEADERS+=	is_constant_evaluated.h
1256TTR_HEADERS+=	is_constructible.h
1257TTR_HEADERS+=	is_convertible.h
1258TTR_HEADERS+=	is_core_convertible.h
1259TTR_HEADERS+=	is_destructible.h
1260TTR_HEADERS+=	is_empty.h
1261TTR_HEADERS+=	is_enum.h
1262TTR_HEADERS+=	is_equality_comparable.h
1263TTR_HEADERS+=	is_execution_policy.h
1264TTR_HEADERS+=	is_final.h
1265TTR_HEADERS+=	is_floating_point.h
1266TTR_HEADERS+=	is_function.h
1267TTR_HEADERS+=	is_fundamental.h
1268TTR_HEADERS+=	is_implicitly_default_constructible.h
1269TTR_HEADERS+=	is_integral.h
1270TTR_HEADERS+=	is_literal_type.h
1271TTR_HEADERS+=	is_member_function_pointer.h
1272TTR_HEADERS+=	is_member_object_pointer.h
1273TTR_HEADERS+=	is_member_pointer.h
1274TTR_HEADERS+=	is_nothrow_assignable.h
1275TTR_HEADERS+=	is_nothrow_constructible.h
1276TTR_HEADERS+=	is_nothrow_convertible.h
1277TTR_HEADERS+=	is_nothrow_destructible.h
1278TTR_HEADERS+=	is_null_pointer.h
1279TTR_HEADERS+=	is_object.h
1280TTR_HEADERS+=	is_pod.h
1281TTR_HEADERS+=	is_pointer.h
1282TTR_HEADERS+=	is_polymorphic.h
1283TTR_HEADERS+=	is_primary_template.h
1284TTR_HEADERS+=	is_reference.h
1285TTR_HEADERS+=	is_reference_wrapper.h
1286TTR_HEADERS+=	is_referenceable.h
1287TTR_HEADERS+=	is_same.h
1288TTR_HEADERS+=	is_scalar.h
1289TTR_HEADERS+=	is_scoped_enum.h
1290TTR_HEADERS+=	is_signed.h
1291TTR_HEADERS+=	is_signed_integer.h
1292TTR_HEADERS+=	is_specialization.h
1293TTR_HEADERS+=	is_standard_layout.h
1294TTR_HEADERS+=	is_swappable.h
1295TTR_HEADERS+=	is_trivial.h
1296TTR_HEADERS+=	is_trivially_assignable.h
1297TTR_HEADERS+=	is_trivially_constructible.h
1298TTR_HEADERS+=	is_trivially_copyable.h
1299TTR_HEADERS+=	is_trivially_destructible.h
1300TTR_HEADERS+=	is_trivially_lexicographically_comparable.h
1301TTR_HEADERS+=	is_trivially_relocatable.h
1302TTR_HEADERS+=	is_unbounded_array.h
1303TTR_HEADERS+=	is_union.h
1304TTR_HEADERS+=	is_unsigned.h
1305TTR_HEADERS+=	is_unsigned_integer.h
1306TTR_HEADERS+=	is_valid_expansion.h
1307TTR_HEADERS+=	is_void.h
1308TTR_HEADERS+=	is_volatile.h
1309TTR_HEADERS+=	lazy.h
1310TTR_HEADERS+=	make_32_64_or_128_bit.h
1311TTR_HEADERS+=	make_const_lvalue_ref.h
1312TTR_HEADERS+=	make_signed.h
1313TTR_HEADERS+=	make_unsigned.h
1314TTR_HEADERS+=	maybe_const.h
1315TTR_HEADERS+=	nat.h
1316TTR_HEADERS+=	negation.h
1317TTR_HEADERS+=	noexcept_move_assign_container.h
1318TTR_HEADERS+=	promote.h
1319TTR_HEADERS+=	rank.h
1320TTR_HEADERS+=	remove_all_extents.h
1321TTR_HEADERS+=	remove_const.h
1322TTR_HEADERS+=	remove_const_ref.h
1323TTR_HEADERS+=	remove_cv.h
1324TTR_HEADERS+=	remove_cvref.h
1325TTR_HEADERS+=	remove_extent.h
1326TTR_HEADERS+=	remove_pointer.h
1327TTR_HEADERS+=	remove_reference.h
1328TTR_HEADERS+=	remove_volatile.h
1329TTR_HEADERS+=	result_of.h
1330TTR_HEADERS+=	strip_signature.h
1331TTR_HEADERS+=	type_identity.h
1332TTR_HEADERS+=	type_list.h
1333TTR_HEADERS+=	underlying_type.h
1334TTR_HEADERS+=	unwrap_ref.h
1335TTR_HEADERS+=	void_t.h
1336.for hdr in ${TTR_HEADERS}
1337TTR+=		${HDRDIR}/__type_traits/${hdr}
1338.endfor
1339
1340INCSGROUPS+=	UTL
1341UTLDIR=		${CXXINCLUDEDIR}/__utility
1342UTL_HEADERS+=	as_const.h
1343UTL_HEADERS+=	as_lvalue.h
1344UTL_HEADERS+=	auto_cast.h
1345UTL_HEADERS+=	cmp.h
1346UTL_HEADERS+=	convert_to_integral.h
1347UTL_HEADERS+=	declval.h
1348UTL_HEADERS+=	empty.h
1349UTL_HEADERS+=	exception_guard.h
1350UTL_HEADERS+=	exchange.h
1351UTL_HEADERS+=	forward.h
1352UTL_HEADERS+=	forward_like.h
1353UTL_HEADERS+=	in_place.h
1354UTL_HEADERS+=	integer_sequence.h
1355UTL_HEADERS+=	is_pointer_in_range.h
1356UTL_HEADERS+=	is_valid_range.h
1357UTL_HEADERS+=	move.h
1358UTL_HEADERS+=	no_destroy.h
1359UTL_HEADERS+=	pair.h
1360UTL_HEADERS+=	piecewise_construct.h
1361UTL_HEADERS+=	priority_tag.h
1362UTL_HEADERS+=	private_constructor_tag.h
1363UTL_HEADERS+=	rel_ops.h
1364UTL_HEADERS+=	small_buffer.h
1365UTL_HEADERS+=	swap.h
1366UTL_HEADERS+=	to_underlying.h
1367UTL_HEADERS+=	unreachable.h
1368.for hdr in ${UTL_HEADERS}
1369UTL+=		${HDRDIR}/__utility/${hdr}
1370.endfor
1371
1372INCSGROUPS+=	VAR
1373VARDIR=	${CXXINCLUDEDIR}/__variant
1374VAR_HEADERS+=	monostate.h
1375.for hdr in ${VAR_HEADERS}
1376VAR+=		${HDRDIR}/__variant/${hdr}
1377.endfor
1378
1379INCSGROUPS+=	EXP
1380EXPDIR=		${CXXINCLUDEDIR}/experimental
1381EXP_HEADERS+=	__config
1382EXP_HEADERS+=	iterator
1383EXP_HEADERS+=	memory
1384EXP_HEADERS+=	propagate_const
1385EXP_HEADERS+=	simd
1386EXP_HEADERS+=	type_traits
1387EXP_HEADERS+=	utility
1388.for hdr in ${EXP_HEADERS}
1389EXP+=		${HDRDIR}/experimental/${hdr}
1390.endfor
1391
1392INCSGROUPS+=	EXS
1393EXSDIR=		${CXXINCLUDEDIR}/experimental/__simd
1394EXS_HEADERS+=	aligned_tag.h
1395EXS_HEADERS+=	declaration.h
1396EXS_HEADERS+=	reference.h
1397EXS_HEADERS+=	scalar.h
1398EXS_HEADERS+=	simd.h
1399EXS_HEADERS+=	simd_mask.h
1400EXS_HEADERS+=	traits.h
1401EXS_HEADERS+=	utility.h
1402EXS_HEADERS+=	vec_ext.h
1403.for hdr in ${EXS_HEADERS}
1404EXS+=		${HDRDIR}/experimental/__simd/${hdr}
1405.endfor
1406
1407INCSGROUPS+=	EXT
1408EXTDIR=		${CXXINCLUDEDIR}/ext
1409EXT_HEADERS+=	__hash
1410EXT_HEADERS+=	hash_map
1411EXT_HEADERS+=	hash_set
1412.for hdr in ${EXT_HEADERS}
1413EXT+=		${HDRDIR}/ext/${hdr}
1414.endfor
1415
1416.include <bsd.lib.mk>
1417