xref: /freebsd/lib/libc++/Makefile (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
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+=		atomic.cpp
22SRCS+=		barrier.cpp
23SRCS+=		bind.cpp
24SRCS+=		charconv.cpp
25SRCS+=		chrono.cpp
26SRCS+=		condition_variable.cpp
27SRCS+=		condition_variable_destructor.cpp
28SRCS+=		debug.cpp
29SRCS+=		exception.cpp
30SRCS+=		filesystem/directory_iterator.cpp
31SRCS+=		filesystem/int128_builtins.cpp
32SRCS+=		filesystem/operations.cpp
33SRCS+=		format.cpp
34SRCS+=		functional.cpp
35SRCS+=		future.cpp
36SRCS+=		hash.cpp
37SRCS+=		ios.cpp
38SRCS+=		ios.instantiations.cpp
39SRCS+=		iostream.cpp
40SRCS+=		legacy_pointer_safety.cpp
41SRCS+=		locale.cpp
42SRCS+=		memory.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
64
65CXXRT_SRCS+=	auxhelper.cc
66CXXRT_SRCS+=	dynamic_cast.cc
67CXXRT_SRCS+=	exception.cc
68CXXRT_SRCS+=	guard.cc
69CXXRT_SRCS+=	libelftc_dem_gnu3.c
70CXXRT_SRCS+=	memory.cc
71CXXRT_SRCS+=	stdexcept.cc
72CXXRT_SRCS+=	terminate.cc
73CXXRT_SRCS+=	typeinfo.cc
74
75.for _S in ${CXXRT_SRCS}
76CLEANFILES+=	cxxrt_${_S}
77STATICOBJS+=	cxxrt_${_S:R}.o
78cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
79	ln -sf ${.ALLSRC} ${.TARGET}
80.endfor
81
82WARNS?=		0
83CFLAGS+=	-isystem ${.CURDIR}
84CFLAGS+=	-isystem ${HDRDIR}
85CFLAGS+=	-isystem ${SRCDIR}
86CFLAGS+=	-isystem ${_LIBCXXRTDIR}
87CFLAGS+=	-nostdinc++
88CFLAGS+=	-nostdlib
89CFLAGS+=	-D_LIBCPP_BUILDING_LIBRARY
90CFLAGS+=	-DLIBCXXRT
91CFLAGS+=	-ffunction-sections
92CFLAGS+=	-fdata-sections
93CXXSTD?=	c++20
94
95LIBADD+=	cxxrt
96
97INCSGROUPS+=	STD
98STDDIR=		${CXXINCLUDEDIR}
99STD_HEADERS+=	__availability
100STD_HEADERS+=	__bit_reference
101STD_HEADERS+=	__bits
102STD_HEADERS+=	__bsd_locale_defaults.h
103STD_HEADERS+=	__bsd_locale_fallbacks.h
104STD_HEADERS+=	__config
105STD_HEADERS+=	__debug
106STD_HEADERS+=	__errc
107STD_HEADERS+=	__functional_base
108STD_HEADERS+=	__hash_table
109STD_HEADERS+=	__libcpp_version
110STD_HEADERS+=	__locale
111STD_HEADERS+=	__mbstate_t.h
112STD_HEADERS+=	__mutex_base
113STD_HEADERS+=	__node_handle
114STD_HEADERS+=	__nullptr
115STD_HEADERS+=	__split_buffer
116STD_HEADERS+=	__std_stream
117STD_HEADERS+=	__string
118STD_HEADERS+=	__threading_support
119STD_HEADERS+=	__tree
120STD_HEADERS+=	__tuple
121STD_HEADERS+=	__undef_macros
122STD_HEADERS+=	algorithm
123STD_HEADERS+=	any
124STD_HEADERS+=	array
125STD_HEADERS+=	atomic
126STD_HEADERS+=	barrier
127STD_HEADERS+=	bit
128STD_HEADERS+=	bitset
129STD_HEADERS+=	cassert
130STD_HEADERS+=	ccomplex
131STD_HEADERS+=	cctype
132STD_HEADERS+=	cerrno
133STD_HEADERS+=	cfenv
134STD_HEADERS+=	cfloat
135STD_HEADERS+=	charconv
136STD_HEADERS+=	chrono
137STD_HEADERS+=	cinttypes
138STD_HEADERS+=	ciso646
139STD_HEADERS+=	climits
140STD_HEADERS+=	clocale
141STD_HEADERS+=	cmath
142STD_HEADERS+=	codecvt
143STD_HEADERS+=	compare
144STD_HEADERS+=	complex
145STD_HEADERS+=	complex.h
146STD_HEADERS+=	concepts
147STD_HEADERS+=	condition_variable
148STD_HEADERS+=	coroutine
149STD_HEADERS+=	csetjmp
150STD_HEADERS+=	csignal
151STD_HEADERS+=	cstdarg
152STD_HEADERS+=	cstdbool
153STD_HEADERS+=	cstddef
154STD_HEADERS+=	cstdint
155STD_HEADERS+=	cstdio
156STD_HEADERS+=	cstdlib
157STD_HEADERS+=	cstring
158STD_HEADERS+=	ctgmath
159STD_HEADERS+=	ctime
160STD_HEADERS+=	ctype.h
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+=	module.modulemap
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+=	span
210STD_HEADERS+=	sstream
211STD_HEADERS+=	stack
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+=	unordered_map
231STD_HEADERS+=	unordered_set
232STD_HEADERS+=	utility
233STD_HEADERS+=	valarray
234STD_HEADERS+=	variant
235STD_HEADERS+=	vector
236STD_HEADERS+=	version
237STD_HEADERS+=	wchar.h
238STD_HEADERS+=	wctype.h
239.for hdr in ${STD_HEADERS}
240STD+=		${HDRDIR}/${hdr}
241.endfor
242
243# Special case for __config_site, which as of libc++ 12.0.0 is generated by
244# CMake, and as of 13.0.0 installed side-by-side with__config.
245STD+=		${.CURDIR}/__config_site
246
247RT_HEADERS+=	cxxabi.h
248.for hdr in ${RT_HEADERS}
249STD+=		${_LIBCXXRTDIR}/${hdr}
250.endfor
251
252INCSGROUPS+=	ALG
253ALGDIR=		${CXXINCLUDEDIR}/__algorithm
254ALG_HEADERS+=	adjacent_find.h
255ALG_HEADERS+=	all_of.h
256ALG_HEADERS+=	any_of.h
257ALG_HEADERS+=	binary_search.h
258ALG_HEADERS+=	clamp.h
259ALG_HEADERS+=	comp.h
260ALG_HEADERS+=	comp_ref_type.h
261ALG_HEADERS+=	copy.h
262ALG_HEADERS+=	copy_backward.h
263ALG_HEADERS+=	copy_if.h
264ALG_HEADERS+=	copy_n.h
265ALG_HEADERS+=	count.h
266ALG_HEADERS+=	count_if.h
267ALG_HEADERS+=	equal.h
268ALG_HEADERS+=	equal_range.h
269ALG_HEADERS+=	fill.h
270ALG_HEADERS+=	fill_n.h
271ALG_HEADERS+=	find.h
272ALG_HEADERS+=	find_end.h
273ALG_HEADERS+=	find_first_of.h
274ALG_HEADERS+=	find_if.h
275ALG_HEADERS+=	find_if_not.h
276ALG_HEADERS+=	for_each.h
277ALG_HEADERS+=	for_each_n.h
278ALG_HEADERS+=	generate.h
279ALG_HEADERS+=	generate_n.h
280ALG_HEADERS+=	half_positive.h
281ALG_HEADERS+=	in_in_out_result.h
282ALG_HEADERS+=	in_in_result.h
283ALG_HEADERS+=	in_out_result.h
284ALG_HEADERS+=	includes.h
285ALG_HEADERS+=	inplace_merge.h
286ALG_HEADERS+=	is_heap.h
287ALG_HEADERS+=	is_heap_until.h
288ALG_HEADERS+=	is_partitioned.h
289ALG_HEADERS+=	is_permutation.h
290ALG_HEADERS+=	is_sorted.h
291ALG_HEADERS+=	is_sorted_until.h
292ALG_HEADERS+=	iter_swap.h
293ALG_HEADERS+=	lexicographical_compare.h
294ALG_HEADERS+=	lower_bound.h
295ALG_HEADERS+=	make_heap.h
296ALG_HEADERS+=	max.h
297ALG_HEADERS+=	max_element.h
298ALG_HEADERS+=	merge.h
299ALG_HEADERS+=	min.h
300ALG_HEADERS+=	min_element.h
301ALG_HEADERS+=	minmax.h
302ALG_HEADERS+=	minmax_element.h
303ALG_HEADERS+=	mismatch.h
304ALG_HEADERS+=	move.h
305ALG_HEADERS+=	move_backward.h
306ALG_HEADERS+=	next_permutation.h
307ALG_HEADERS+=	none_of.h
308ALG_HEADERS+=	nth_element.h
309ALG_HEADERS+=	partial_sort.h
310ALG_HEADERS+=	partial_sort_copy.h
311ALG_HEADERS+=	partition.h
312ALG_HEADERS+=	partition_copy.h
313ALG_HEADERS+=	partition_point.h
314ALG_HEADERS+=	pop_heap.h
315ALG_HEADERS+=	prev_permutation.h
316ALG_HEADERS+=	push_heap.h
317ALG_HEADERS+=	remove.h
318ALG_HEADERS+=	remove_copy.h
319ALG_HEADERS+=	remove_copy_if.h
320ALG_HEADERS+=	remove_if.h
321ALG_HEADERS+=	replace.h
322ALG_HEADERS+=	replace_copy.h
323ALG_HEADERS+=	replace_copy_if.h
324ALG_HEADERS+=	replace_if.h
325ALG_HEADERS+=	reverse.h
326ALG_HEADERS+=	reverse_copy.h
327ALG_HEADERS+=	rotate.h
328ALG_HEADERS+=	rotate_copy.h
329ALG_HEADERS+=	sample.h
330ALG_HEADERS+=	search.h
331ALG_HEADERS+=	search_n.h
332ALG_HEADERS+=	set_difference.h
333ALG_HEADERS+=	set_intersection.h
334ALG_HEADERS+=	set_symmetric_difference.h
335ALG_HEADERS+=	set_union.h
336ALG_HEADERS+=	shift_left.h
337ALG_HEADERS+=	shift_right.h
338ALG_HEADERS+=	shuffle.h
339ALG_HEADERS+=	sift_down.h
340ALG_HEADERS+=	sort.h
341ALG_HEADERS+=	sort_heap.h
342ALG_HEADERS+=	stable_partition.h
343ALG_HEADERS+=	stable_sort.h
344ALG_HEADERS+=	swap_ranges.h
345ALG_HEADERS+=	transform.h
346ALG_HEADERS+=	unique.h
347ALG_HEADERS+=	unique_copy.h
348ALG_HEADERS+=	unwrap_iter.h
349ALG_HEADERS+=	upper_bound.h
350.for hdr in ${ALG_HEADERS}
351ALG+=		${HDRDIR}/__algorithm/${hdr}
352.endfor
353
354INCSGROUPS+=	BIT
355BITDIR=		${CXXINCLUDEDIR}/__bit
356BIT_HEADERS+=	bit_cast.h
357BIT_HEADERS+=	byteswap.h
358.for hdr in ${BIT_HEADERS}
359BIT+=		${HDRDIR}/__bit/${hdr}
360.endfor
361
362INCSGROUPS+=	CHC
363CHCDIR=		${CXXINCLUDEDIR}/__charconv
364CHC_HEADERS+=	chars_format.h
365CHC_HEADERS+=	from_chars_result.h
366CHC_HEADERS+=	to_chars_result.h
367.for hdr in ${CHC_HEADERS}
368CHC+=		${HDRDIR}/__charconv/${hdr}
369.endfor
370
371INCSGROUPS+=	CHR
372CHRDIR=		${CXXINCLUDEDIR}/__chrono
373CHR_HEADERS+=	calendar.h
374CHR_HEADERS+=	convert_to_timespec.h
375CHR_HEADERS+=	duration.h
376CHR_HEADERS+=	file_clock.h
377CHR_HEADERS+=	high_resolution_clock.h
378CHR_HEADERS+=	steady_clock.h
379CHR_HEADERS+=	system_clock.h
380CHR_HEADERS+=	time_point.h
381.for hdr in ${CHR_HEADERS}
382CHR+=		${HDRDIR}/__chrono/${hdr}
383.endfor
384
385INCSGROUPS+=	CMP
386CMPDIR=		${CXXINCLUDEDIR}/__compare
387CMP_HEADERS+=	common_comparison_category.h
388CMP_HEADERS+=	compare_partial_order_fallback.h
389CMP_HEADERS+=	compare_strong_order_fallback.h
390CMP_HEADERS+=	compare_three_way.h
391CMP_HEADERS+=	compare_three_way_result.h
392CMP_HEADERS+=	compare_weak_order_fallback.h
393CMP_HEADERS+=	is_eq.h
394CMP_HEADERS+=	ordering.h
395CMP_HEADERS+=	partial_order.h
396CMP_HEADERS+=	strong_order.h
397CMP_HEADERS+=	synth_three_way.h
398CMP_HEADERS+=	three_way_comparable.h
399CMP_HEADERS+=	weak_order.h
400.for hdr in ${CMP_HEADERS}
401CMP+=		${HDRDIR}/__compare/${hdr}
402.endfor
403
404INCSGROUPS+=	CON
405CONDIR=		${CXXINCLUDEDIR}/__concepts
406CON_HEADERS+=	arithmetic.h
407CON_HEADERS+=	assignable.h
408CON_HEADERS+=	boolean_testable.h
409CON_HEADERS+=	class_or_enum.h
410CON_HEADERS+=	common_reference_with.h
411CON_HEADERS+=	common_with.h
412CON_HEADERS+=	constructible.h
413CON_HEADERS+=	convertible_to.h
414CON_HEADERS+=	copyable.h
415CON_HEADERS+=	derived_from.h
416CON_HEADERS+=	destructible.h
417CON_HEADERS+=	different_from.h
418CON_HEADERS+=	equality_comparable.h
419CON_HEADERS+=	invocable.h
420CON_HEADERS+=	movable.h
421CON_HEADERS+=	predicate.h
422CON_HEADERS+=	regular.h
423CON_HEADERS+=	relation.h
424CON_HEADERS+=	same_as.h
425CON_HEADERS+=	semiregular.h
426CON_HEADERS+=	swappable.h
427CON_HEADERS+=	totally_ordered.h
428.for hdr in ${CON_HEADERS}
429CON+=		${HDRDIR}/__concepts/${hdr}
430.endfor
431
432INCSGROUPS+=	COR
433CORDIR=		${CXXINCLUDEDIR}/__coroutine
434COR_HEADERS+=	coroutine_handle.h
435COR_HEADERS+=	coroutine_traits.h
436COR_HEADERS+=	noop_coroutine_handle.h
437COR_HEADERS+=	trivial_awaitables.h
438.for hdr in ${COR_HEADERS}
439COR+=		${HDRDIR}/__coroutine/${hdr}
440.endfor
441
442INCSGROUPS+=	FS
443FSDIR=		${CXXINCLUDEDIR}/__filesystem
444FS_HEADERS+=	copy_options.h
445FS_HEADERS+=	directory_entry.h
446FS_HEADERS+=	directory_iterator.h
447FS_HEADERS+=	directory_options.h
448FS_HEADERS+=	file_status.h
449FS_HEADERS+=	file_time_type.h
450FS_HEADERS+=	file_type.h
451FS_HEADERS+=	filesystem_error.h
452FS_HEADERS+=	operations.h
453FS_HEADERS+=	path.h
454FS_HEADERS+=	path_iterator.h
455FS_HEADERS+=	perm_options.h
456FS_HEADERS+=	perms.h
457FS_HEADERS+=	recursive_directory_iterator.h
458FS_HEADERS+=	space_info.h
459FS_HEADERS+=	u8path.h
460.for hdr in ${FS_HEADERS}
461FS+=		${HDRDIR}/__filesystem/${hdr}
462.endfor
463
464INCSGROUPS+=	FMT
465FMTDIR=		${CXXINCLUDEDIR}/__format
466FMT_HEADERS+=	format_arg.h
467FMT_HEADERS+=	format_args.h
468FMT_HEADERS+=	format_context.h
469FMT_HEADERS+=	format_error.h
470FMT_HEADERS+=	format_fwd.h
471FMT_HEADERS+=	format_parse_context.h
472FMT_HEADERS+=	format_string.h
473FMT_HEADERS+=	format_to_n_result.h
474FMT_HEADERS+=	formatter.h
475FMT_HEADERS+=	formatter_bool.h
476FMT_HEADERS+=	formatter_char.h
477FMT_HEADERS+=	formatter_floating_point.h
478FMT_HEADERS+=	formatter_integer.h
479FMT_HEADERS+=	formatter_integral.h
480FMT_HEADERS+=	formatter_pointer.h
481FMT_HEADERS+=	formatter_string.h
482FMT_HEADERS+=	parser_std_format_spec.h
483.for hdr in ${FMT_HEADERS}
484FMT+=		${HDRDIR}/__format/${hdr}
485.endfor
486
487INCSGROUPS+=	FUN
488FUNDIR=		${CXXINCLUDEDIR}/__functional
489FUN_HEADERS+=	binary_function.h
490FUN_HEADERS+=	binary_negate.h
491FUN_HEADERS+=	bind.h
492FUN_HEADERS+=	bind_back.h
493FUN_HEADERS+=	bind_front.h
494FUN_HEADERS+=	binder1st.h
495FUN_HEADERS+=	binder2nd.h
496FUN_HEADERS+=	compose.h
497FUN_HEADERS+=	default_searcher.h
498FUN_HEADERS+=	function.h
499FUN_HEADERS+=	hash.h
500FUN_HEADERS+=	identity.h
501FUN_HEADERS+=	invoke.h
502FUN_HEADERS+=	is_transparent.h
503FUN_HEADERS+=	mem_fn.h
504FUN_HEADERS+=	mem_fun_ref.h
505FUN_HEADERS+=	not_fn.h
506FUN_HEADERS+=	operations.h
507FUN_HEADERS+=	perfect_forward.h
508FUN_HEADERS+=	pointer_to_binary_function.h
509FUN_HEADERS+=	pointer_to_unary_function.h
510FUN_HEADERS+=	ranges_operations.h
511FUN_HEADERS+=	reference_wrapper.h
512FUN_HEADERS+=	unary_function.h
513FUN_HEADERS+=	unary_negate.h
514FUN_HEADERS+=	unwrap_ref.h
515FUN_HEADERS+=	weak_result_type.h
516.for hdr in ${FUN_HEADERS}
517FUN+=		${HDRDIR}/__functional/${hdr}
518.endfor
519
520INCSGROUPS+=	IT
521ITDIR=		${CXXINCLUDEDIR}/__iterator
522IT_HEADERS+=	access.h
523IT_HEADERS+=	advance.h
524IT_HEADERS+=	back_insert_iterator.h
525IT_HEADERS+=	common_iterator.h
526IT_HEADERS+=	concepts.h
527IT_HEADERS+=	counted_iterator.h
528IT_HEADERS+=	data.h
529IT_HEADERS+=	default_sentinel.h
530IT_HEADERS+=	distance.h
531IT_HEADERS+=	empty.h
532IT_HEADERS+=	erase_if_container.h
533IT_HEADERS+=	front_insert_iterator.h
534IT_HEADERS+=	incrementable_traits.h
535IT_HEADERS+=	indirectly_comparable.h
536IT_HEADERS+=	insert_iterator.h
537IT_HEADERS+=	istream_iterator.h
538IT_HEADERS+=	istreambuf_iterator.h
539IT_HEADERS+=	iter_move.h
540IT_HEADERS+=	iter_swap.h
541IT_HEADERS+=	iterator.h
542IT_HEADERS+=	iterator_traits.h
543IT_HEADERS+=	move_iterator.h
544IT_HEADERS+=	next.h
545IT_HEADERS+=	ostream_iterator.h
546IT_HEADERS+=	ostreambuf_iterator.h
547IT_HEADERS+=	prev.h
548IT_HEADERS+=	projected.h
549IT_HEADERS+=	readable_traits.h
550IT_HEADERS+=	reverse_access.h
551IT_HEADERS+=	reverse_iterator.h
552IT_HEADERS+=	size.h
553IT_HEADERS+=	unreachable_sentinel.h
554IT_HEADERS+=	wrap_iter.h
555.for hdr in ${IT_HEADERS}
556IT+=		${HDRDIR}/__iterator/${hdr}
557.endfor
558
559INCSGROUPS+=	MEM
560MEMDIR=		${CXXINCLUDEDIR}/__memory
561MEM_HEADERS+=	addressof.h
562MEM_HEADERS+=	allocation_guard.h
563MEM_HEADERS+=	allocator.h
564MEM_HEADERS+=	allocator_arg_t.h
565MEM_HEADERS+=	allocator_traits.h
566MEM_HEADERS+=	auto_ptr.h
567MEM_HEADERS+=	compressed_pair.h
568MEM_HEADERS+=	concepts.h
569MEM_HEADERS+=	construct_at.h
570MEM_HEADERS+=	pointer_traits.h
571MEM_HEADERS+=	ranges_construct_at.h
572MEM_HEADERS+=	ranges_uninitialized_algorithms.h
573MEM_HEADERS+=	raw_storage_iterator.h
574MEM_HEADERS+=	shared_ptr.h
575MEM_HEADERS+=	temporary_buffer.h
576MEM_HEADERS+=	uninitialized_algorithms.h
577MEM_HEADERS+=	unique_ptr.h
578MEM_HEADERS+=	uses_allocator.h
579MEM_HEADERS+=	voidify.h
580.for hdr in ${MEM_HEADERS}
581MEM+=		${HDRDIR}/__memory/${hdr}
582.endfor
583
584INCSGROUPS+=    NUM
585NUMDIR=		${CXXINCLUDEDIR}/__numeric
586NUM_HEADERS+=	accumulate.h
587NUM_HEADERS+=	adjacent_difference.h
588NUM_HEADERS+=	exclusive_scan.h
589NUM_HEADERS+=	gcd_lcm.h
590NUM_HEADERS+=	inclusive_scan.h
591NUM_HEADERS+=	inner_product.h
592NUM_HEADERS+=	iota.h
593NUM_HEADERS+=	midpoint.h
594NUM_HEADERS+=	partial_sum.h
595NUM_HEADERS+=	reduce.h
596NUM_HEADERS+=	transform_exclusive_scan.h
597NUM_HEADERS+=	transform_inclusive_scan.h
598NUM_HEADERS+=	transform_reduce.h
599.for hdr in ${NUM_HEADERS}
600NUM+=		${HDRDIR}/__numeric/${hdr}
601.endfor
602
603INCSGROUPS+=	RND
604RNDDIR=		${CXXINCLUDEDIR}/__random
605RND_HEADERS+=	bernoulli_distribution.h
606RND_HEADERS+=	binomial_distribution.h
607RND_HEADERS+=	cauchy_distribution.h
608RND_HEADERS+=	chi_squared_distribution.h
609RND_HEADERS+=	clamp_to_integral.h
610RND_HEADERS+=	default_random_engine.h
611RND_HEADERS+=	discard_block_engine.h
612RND_HEADERS+=	discrete_distribution.h
613RND_HEADERS+=	exponential_distribution.h
614RND_HEADERS+=	extreme_value_distribution.h
615RND_HEADERS+=	fisher_f_distribution.h
616RND_HEADERS+=	gamma_distribution.h
617RND_HEADERS+=	generate_canonical.h
618RND_HEADERS+=	geometric_distribution.h
619RND_HEADERS+=	independent_bits_engine.h
620RND_HEADERS+=	is_seed_sequence.h
621RND_HEADERS+=	knuth_b.h
622RND_HEADERS+=	linear_congruential_engine.h
623RND_HEADERS+=	log2.h
624RND_HEADERS+=	lognormal_distribution.h
625RND_HEADERS+=	mersenne_twister_engine.h
626RND_HEADERS+=	negative_binomial_distribution.h
627RND_HEADERS+=	normal_distribution.h
628RND_HEADERS+=	piecewise_constant_distribution.h
629RND_HEADERS+=	piecewise_linear_distribution.h
630RND_HEADERS+=	poisson_distribution.h
631RND_HEADERS+=	random_device.h
632RND_HEADERS+=	ranlux.h
633RND_HEADERS+=	seed_seq.h
634RND_HEADERS+=	shuffle_order_engine.h
635RND_HEADERS+=	student_t_distribution.h
636RND_HEADERS+=	subtract_with_carry_engine.h
637RND_HEADERS+=	uniform_int_distribution.h
638RND_HEADERS+=	uniform_random_bit_generator.h
639RND_HEADERS+=	uniform_real_distribution.h
640RND_HEADERS+=	weibull_distribution.h
641.for hdr in ${RND_HEADERS}
642RND+=		${HDRDIR}/__random/${hdr}
643.endfor
644
645INCSGROUPS+=	RNG
646RNGDIR=		${CXXINCLUDEDIR}/__ranges
647RNG_HEADERS+=	access.h
648RNG_HEADERS+=	all.h
649RNG_HEADERS+=	common_view.h
650RNG_HEADERS+=	concepts.h
651RNG_HEADERS+=	copyable_box.h
652RNG_HEADERS+=	counted.h
653RNG_HEADERS+=	dangling.h
654RNG_HEADERS+=	data.h
655RNG_HEADERS+=	drop_view.h
656RNG_HEADERS+=	empty.h
657RNG_HEADERS+=	empty_view.h
658RNG_HEADERS+=	enable_borrowed_range.h
659RNG_HEADERS+=	enable_view.h
660RNG_HEADERS+=	iota_view.h
661RNG_HEADERS+=	join_view.h
662RNG_HEADERS+=	non_propagating_cache.h
663RNG_HEADERS+=	owning_view.h
664RNG_HEADERS+=	range_adaptor.h
665RNG_HEADERS+=	ref_view.h
666RNG_HEADERS+=	reverse_view.h
667RNG_HEADERS+=	single_view.h
668RNG_HEADERS+=	size.h
669RNG_HEADERS+=	subrange.h
670RNG_HEADERS+=	take_view.h
671RNG_HEADERS+=	transform_view.h
672RNG_HEADERS+=	view_interface.h
673RNG_HEADERS+=	views.h
674.for hdr in ${RNG_HEADERS}
675RNG+=		${HDRDIR}/__ranges/${hdr}
676.endfor
677
678INCSGROUPS+=	THR
679THRDIR=		${CXXINCLUDEDIR}/__thread
680THR_HEADERS+=	poll_with_backoff.h
681THR_HEADERS+=	timed_backoff_policy.h
682.for hdr in ${THR_HEADERS}
683THR+=		${HDRDIR}/__thread/${hdr}
684.endfor
685
686INCSGROUPS+=	UTL
687UTLDIR=		${CXXINCLUDEDIR}/__utility
688UTL_HEADERS+=	as_const.h
689UTL_HEADERS+=	auto_cast.h
690UTL_HEADERS+=	cmp.h
691UTL_HEADERS+=	declval.h
692UTL_HEADERS+=	exchange.h
693UTL_HEADERS+=	forward.h
694UTL_HEADERS+=	in_place.h
695UTL_HEADERS+=	integer_sequence.h
696UTL_HEADERS+=	move.h
697UTL_HEADERS+=	pair.h
698UTL_HEADERS+=	piecewise_construct.h
699UTL_HEADERS+=	priority_tag.h
700UTL_HEADERS+=	rel_ops.h
701UTL_HEADERS+=	swap.h
702UTL_HEADERS+=	to_underlying.h
703UTL_HEADERS+=	transaction.h
704.for hdr in ${UTL_HEADERS}
705UTL+=		${HDRDIR}/__utility/${hdr}
706.endfor
707
708INCSGROUPS+=	VAR
709VARDIR=	${CXXINCLUDEDIR}/__variant
710VAR_HEADERS+=	monostate.h
711.for hdr in ${VAR_HEADERS}
712VAR+=		${HDRDIR}/__variant/${hdr}
713.endfor
714
715INCSGROUPS+=	EXP
716EXPDIR=		${CXXINCLUDEDIR}/experimental
717EXP_HEADERS+=	__config
718EXP_HEADERS+=	__memory
719EXP_HEADERS+=	algorithm
720EXP_HEADERS+=	coroutine
721EXP_HEADERS+=	deque
722EXP_HEADERS+=	filesystem
723EXP_HEADERS+=	forward_list
724EXP_HEADERS+=	functional
725EXP_HEADERS+=	iterator
726EXP_HEADERS+=	list
727EXP_HEADERS+=	map
728EXP_HEADERS+=	memory_resource
729EXP_HEADERS+=	propagate_const
730EXP_HEADERS+=	regex
731EXP_HEADERS+=	set
732EXP_HEADERS+=	simd
733EXP_HEADERS+=	string
734EXP_HEADERS+=	type_traits
735EXP_HEADERS+=	unordered_map
736EXP_HEADERS+=	unordered_set
737EXP_HEADERS+=	utility
738EXP_HEADERS+=	vector
739.for hdr in ${EXP_HEADERS}
740EXP+=		${HDRDIR}/experimental/${hdr}
741.endfor
742
743INCSGROUPS+=	EXT
744EXTDIR=		${CXXINCLUDEDIR}/ext
745EXT_HEADERS+=	__hash
746EXT_HEADERS+=	hash_map
747EXT_HEADERS+=	hash_set
748.for hdr in ${EXT_HEADERS}
749EXT+=		${HDRDIR}/ext/${hdr}
750.endfor
751
752.include <bsd.lib.mk>
753