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