xref: /freebsd/lib/libc++/Makefile (revision 5e801ac66d24704442eba426ed13c3effb8a34e7)
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+=		shared_mutex.cpp
51SRCS+=		stdexcept.cpp
52SRCS+=		string.cpp
53SRCS+=		strstream.cpp
54SRCS+=		system_error.cpp
55SRCS+=		thread.cpp
56SRCS+=		typeinfo.cpp
57SRCS+=		utility.cpp
58SRCS+=		valarray.cpp
59SRCS+=		variant.cpp
60SRCS+=		vector.cpp
61
62CXXRT_SRCS+=	auxhelper.cc
63CXXRT_SRCS+=	dynamic_cast.cc
64CXXRT_SRCS+=	exception.cc
65CXXRT_SRCS+=	guard.cc
66CXXRT_SRCS+=	libelftc_dem_gnu3.c
67CXXRT_SRCS+=	memory.cc
68CXXRT_SRCS+=	stdexcept.cc
69CXXRT_SRCS+=	terminate.cc
70CXXRT_SRCS+=	typeinfo.cc
71
72.for _S in ${CXXRT_SRCS}
73CLEANFILES+=	cxxrt_${_S}
74STATICOBJS+=	cxxrt_${_S:R}.o
75cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
76	ln -sf ${.ALLSRC} ${.TARGET}
77.endfor
78
79WARNS?=		0
80CFLAGS+=	-isystem ${.CURDIR}
81CFLAGS+=	-isystem ${HDRDIR}
82CFLAGS+=	-isystem ${_LIBCXXRTDIR}
83CFLAGS+=	-nostdinc++
84CFLAGS+=	-nostdlib
85CFLAGS+=	-D_LIBCPP_BUILDING_LIBRARY
86CFLAGS+=	-DLIBCXXRT
87CFLAGS+=	-ffunction-sections
88CFLAGS+=	-fdata-sections
89CXXSTD?=	c++14
90
91LIBADD+=	cxxrt
92
93INCSGROUPS+=	STD
94STDDIR=		${CXXINCLUDEDIR}
95STD_HEADERS+=	__availability
96STD_HEADERS+=	__bit_reference
97STD_HEADERS+=	__bits
98STD_HEADERS+=	__bsd_locale_defaults.h
99STD_HEADERS+=	__bsd_locale_fallbacks.h
100STD_HEADERS+=	__config
101STD_HEADERS+=	__debug
102STD_HEADERS+=	__errc
103STD_HEADERS+=	__function_like.h
104STD_HEADERS+=	__functional_base
105STD_HEADERS+=	__hash_table
106STD_HEADERS+=	__libcpp_version
107STD_HEADERS+=	__locale
108STD_HEADERS+=	__mbstate_t.h
109STD_HEADERS+=	__mutex_base
110STD_HEADERS+=	__node_handle
111STD_HEADERS+=	__nullptr
112STD_HEADERS+=	__split_buffer
113STD_HEADERS+=	__std_stream
114STD_HEADERS+=	__string
115STD_HEADERS+=	__threading_support
116STD_HEADERS+=	__tree
117STD_HEADERS+=	__tuple
118STD_HEADERS+=	__undef_macros
119STD_HEADERS+=	algorithm
120STD_HEADERS+=	any
121STD_HEADERS+=	array
122STD_HEADERS+=	atomic
123STD_HEADERS+=	barrier
124STD_HEADERS+=	bit
125STD_HEADERS+=	bitset
126STD_HEADERS+=	cassert
127STD_HEADERS+=	ccomplex
128STD_HEADERS+=	cctype
129STD_HEADERS+=	cerrno
130STD_HEADERS+=	cfenv
131STD_HEADERS+=	cfloat
132STD_HEADERS+=	charconv
133STD_HEADERS+=	chrono
134STD_HEADERS+=	cinttypes
135STD_HEADERS+=	ciso646
136STD_HEADERS+=	climits
137STD_HEADERS+=	clocale
138STD_HEADERS+=	cmath
139STD_HEADERS+=	codecvt
140STD_HEADERS+=	compare
141STD_HEADERS+=	complex
142STD_HEADERS+=	complex.h
143STD_HEADERS+=	concepts
144STD_HEADERS+=	condition_variable
145STD_HEADERS+=	coroutine
146STD_HEADERS+=	csetjmp
147STD_HEADERS+=	csignal
148STD_HEADERS+=	cstdarg
149STD_HEADERS+=	cstdbool
150STD_HEADERS+=	cstddef
151STD_HEADERS+=	cstdint
152STD_HEADERS+=	cstdio
153STD_HEADERS+=	cstdlib
154STD_HEADERS+=	cstring
155STD_HEADERS+=	ctgmath
156STD_HEADERS+=	ctime
157STD_HEADERS+=	ctype.h
158STD_HEADERS+=	cwchar
159STD_HEADERS+=	cwctype
160STD_HEADERS+=	deque
161STD_HEADERS+=	errno.h
162STD_HEADERS+=	exception
163STD_HEADERS+=	execution
164STD_HEADERS+=	fenv.h
165STD_HEADERS+=	filesystem
166STD_HEADERS+=	float.h
167STD_HEADERS+=	format
168STD_HEADERS+=	forward_list
169STD_HEADERS+=	fstream
170STD_HEADERS+=	functional
171STD_HEADERS+=	future
172STD_HEADERS+=	initializer_list
173STD_HEADERS+=	inttypes.h
174STD_HEADERS+=	iomanip
175STD_HEADERS+=	ios
176STD_HEADERS+=	iosfwd
177STD_HEADERS+=	iostream
178STD_HEADERS+=	istream
179STD_HEADERS+=	iterator
180STD_HEADERS+=	latch
181STD_HEADERS+=	limits
182STD_HEADERS+=	limits.h
183STD_HEADERS+=	list
184STD_HEADERS+=	locale
185STD_HEADERS+=	locale.h
186STD_HEADERS+=	map
187STD_HEADERS+=	math.h
188STD_HEADERS+=	memory
189STD_HEADERS+=	module.modulemap
190STD_HEADERS+=	mutex
191STD_HEADERS+=	new
192STD_HEADERS+=	numbers
193STD_HEADERS+=	numeric
194STD_HEADERS+=	optional
195STD_HEADERS+=	ostream
196STD_HEADERS+=	queue
197STD_HEADERS+=	random
198STD_HEADERS+=	ranges
199STD_HEADERS+=	ratio
200STD_HEADERS+=	regex
201STD_HEADERS+=	scoped_allocator
202STD_HEADERS+=	semaphore
203STD_HEADERS+=	set
204STD_HEADERS+=	setjmp.h
205STD_HEADERS+=	shared_mutex
206STD_HEADERS+=	span
207STD_HEADERS+=	sstream
208STD_HEADERS+=	stack
209STD_HEADERS+=	stdbool.h
210STD_HEADERS+=	stddef.h
211STD_HEADERS+=	stdexcept
212STD_HEADERS+=	stdint.h
213STD_HEADERS+=	stdio.h
214STD_HEADERS+=	stdlib.h
215STD_HEADERS+=	streambuf
216STD_HEADERS+=	string
217STD_HEADERS+=	string.h
218STD_HEADERS+=	string_view
219STD_HEADERS+=	strstream
220STD_HEADERS+=	system_error
221STD_HEADERS+=	tgmath.h
222STD_HEADERS+=	thread
223STD_HEADERS+=	tuple
224STD_HEADERS+=	type_traits
225STD_HEADERS+=	typeindex
226STD_HEADERS+=	typeinfo
227STD_HEADERS+=	unordered_map
228STD_HEADERS+=	unordered_set
229STD_HEADERS+=	utility
230STD_HEADERS+=	valarray
231STD_HEADERS+=	variant
232STD_HEADERS+=	vector
233STD_HEADERS+=	version
234STD_HEADERS+=	wchar.h
235STD_HEADERS+=	wctype.h
236.for hdr in ${STD_HEADERS}
237STD+=		${HDRDIR}/${hdr}
238.endfor
239
240# Special case for __config_site, which as of libc++ 12.0.0 is generated by
241# CMake, and as of 13.0.0 installed side-by-side with__config.
242STD+=		${.CURDIR}/__config_site
243
244RT_HEADERS+=	cxxabi.h
245.for hdr in ${RT_HEADERS}
246STD+=		${_LIBCXXRTDIR}/${hdr}
247.endfor
248
249INCSGROUPS+=	ALG
250ALGDIR=		${CXXINCLUDEDIR}/__algorithm
251ALG_HEADERS+=	adjacent_find.h
252ALG_HEADERS+=	all_of.h
253ALG_HEADERS+=	any_of.h
254ALG_HEADERS+=	binary_search.h
255ALG_HEADERS+=	clamp.h
256ALG_HEADERS+=	comp.h
257ALG_HEADERS+=	comp_ref_type.h
258ALG_HEADERS+=	copy.h
259ALG_HEADERS+=	copy_backward.h
260ALG_HEADERS+=	copy_if.h
261ALG_HEADERS+=	copy_n.h
262ALG_HEADERS+=	count.h
263ALG_HEADERS+=	count_if.h
264ALG_HEADERS+=	equal.h
265ALG_HEADERS+=	equal_range.h
266ALG_HEADERS+=	fill.h
267ALG_HEADERS+=	fill_n.h
268ALG_HEADERS+=	find.h
269ALG_HEADERS+=	find_end.h
270ALG_HEADERS+=	find_first_of.h
271ALG_HEADERS+=	find_if.h
272ALG_HEADERS+=	find_if_not.h
273ALG_HEADERS+=	for_each.h
274ALG_HEADERS+=	for_each_n.h
275ALG_HEADERS+=	generate.h
276ALG_HEADERS+=	generate_n.h
277ALG_HEADERS+=	half_positive.h
278ALG_HEADERS+=	includes.h
279ALG_HEADERS+=	inplace_merge.h
280ALG_HEADERS+=	is_heap.h
281ALG_HEADERS+=	is_heap_until.h
282ALG_HEADERS+=	is_partitioned.h
283ALG_HEADERS+=	is_permutation.h
284ALG_HEADERS+=	is_sorted.h
285ALG_HEADERS+=	is_sorted_until.h
286ALG_HEADERS+=	iter_swap.h
287ALG_HEADERS+=	lexicographical_compare.h
288ALG_HEADERS+=	lower_bound.h
289ALG_HEADERS+=	make_heap.h
290ALG_HEADERS+=	max.h
291ALG_HEADERS+=	max_element.h
292ALG_HEADERS+=	merge.h
293ALG_HEADERS+=	min.h
294ALG_HEADERS+=	min_element.h
295ALG_HEADERS+=	minmax.h
296ALG_HEADERS+=	minmax_element.h
297ALG_HEADERS+=	mismatch.h
298ALG_HEADERS+=	move.h
299ALG_HEADERS+=	move_backward.h
300ALG_HEADERS+=	next_permutation.h
301ALG_HEADERS+=	none_of.h
302ALG_HEADERS+=	nth_element.h
303ALG_HEADERS+=	partial_sort.h
304ALG_HEADERS+=	partial_sort_copy.h
305ALG_HEADERS+=	partition.h
306ALG_HEADERS+=	partition_copy.h
307ALG_HEADERS+=	partition_point.h
308ALG_HEADERS+=	pop_heap.h
309ALG_HEADERS+=	prev_permutation.h
310ALG_HEADERS+=	push_heap.h
311ALG_HEADERS+=	remove.h
312ALG_HEADERS+=	remove_copy.h
313ALG_HEADERS+=	remove_copy_if.h
314ALG_HEADERS+=	remove_if.h
315ALG_HEADERS+=	replace.h
316ALG_HEADERS+=	replace_copy.h
317ALG_HEADERS+=	replace_copy_if.h
318ALG_HEADERS+=	replace_if.h
319ALG_HEADERS+=	reverse.h
320ALG_HEADERS+=	reverse_copy.h
321ALG_HEADERS+=	rotate.h
322ALG_HEADERS+=	rotate_copy.h
323ALG_HEADERS+=	sample.h
324ALG_HEADERS+=	search.h
325ALG_HEADERS+=	search_n.h
326ALG_HEADERS+=	set_difference.h
327ALG_HEADERS+=	set_intersection.h
328ALG_HEADERS+=	set_symmetric_difference.h
329ALG_HEADERS+=	set_union.h
330ALG_HEADERS+=	shift_left.h
331ALG_HEADERS+=	shift_right.h
332ALG_HEADERS+=	shuffle.h
333ALG_HEADERS+=	sift_down.h
334ALG_HEADERS+=	sort.h
335ALG_HEADERS+=	sort_heap.h
336ALG_HEADERS+=	stable_partition.h
337ALG_HEADERS+=	stable_sort.h
338ALG_HEADERS+=	swap_ranges.h
339ALG_HEADERS+=	transform.h
340ALG_HEADERS+=	unique.h
341ALG_HEADERS+=	unique_copy.h
342ALG_HEADERS+=	unwrap_iter.h
343ALG_HEADERS+=	upper_bound.h
344.for hdr in ${ALG_HEADERS}
345ALG+=		${HDRDIR}/__algorithm/${hdr}
346.endfor
347
348INCSGROUPS+=	BIT
349BITDIR=		${CXXINCLUDEDIR}/__bit
350BIT_HEADERS+=	bit_cast.h
351.for hdr in ${BIT_HEADERS}
352BIT+=		${HDRDIR}/__bit/${hdr}
353.endfor
354
355INCSGROUPS+=	CHC
356CHCDIR=		${CXXINCLUDEDIR}/__charconv
357CHC_HEADERS+=	chars_format.h
358CHC_HEADERS+=	from_chars_result.h
359CHC_HEADERS+=	to_chars_result.h
360.for hdr in ${CHC_HEADERS}
361CHC+=		${HDRDIR}/__charconv/${hdr}
362.endfor
363
364INCSGROUPS+=	CMP
365CMPDIR=		${CXXINCLUDEDIR}/__compare
366CMP_HEADERS+=	common_comparison_category.h
367CMP_HEADERS+=	compare_three_way.h
368CMP_HEADERS+=	compare_three_way_result.h
369CMP_HEADERS+=	is_eq.h
370CMP_HEADERS+=	ordering.h
371CMP_HEADERS+=	synth_three_way.h
372CMP_HEADERS+=	three_way_comparable.h
373.for hdr in ${CMP_HEADERS}
374CMP+=		${HDRDIR}/__compare/${hdr}
375.endfor
376
377INCSGROUPS+=	CON
378CONDIR=		${CXXINCLUDEDIR}/__concepts
379CON_HEADERS+=	arithmetic.h
380CON_HEADERS+=	assignable.h
381CON_HEADERS+=	boolean_testable.h
382CON_HEADERS+=	class_or_enum.h
383CON_HEADERS+=	common_reference_with.h
384CON_HEADERS+=	common_with.h
385CON_HEADERS+=	constructible.h
386CON_HEADERS+=	convertible_to.h
387CON_HEADERS+=	copyable.h
388CON_HEADERS+=	derived_from.h
389CON_HEADERS+=	destructible.h
390CON_HEADERS+=	different_from.h
391CON_HEADERS+=	equality_comparable.h
392CON_HEADERS+=	invocable.h
393CON_HEADERS+=	movable.h
394CON_HEADERS+=	predicate.h
395CON_HEADERS+=	regular.h
396CON_HEADERS+=	relation.h
397CON_HEADERS+=	same_as.h
398CON_HEADERS+=	semiregular.h
399CON_HEADERS+=	swappable.h
400CON_HEADERS+=	totally_ordered.h
401.for hdr in ${CON_HEADERS}
402CON+=		${HDRDIR}/__concepts/${hdr}
403.endfor
404
405INCSGROUPS+=	COR
406CORDIR=		${CXXINCLUDEDIR}/__coroutine
407COR_HEADERS+=	coroutine_handle.h
408COR_HEADERS+=	coroutine_traits.h
409COR_HEADERS+=	noop_coroutine_handle.h
410COR_HEADERS+=	trivial_awaitables.h
411.for hdr in ${COR_HEADERS}
412COR+=		${HDRDIR}/__coroutine/${hdr}
413.endfor
414
415INCSGROUPS+=	FMT
416FMTDIR=		${CXXINCLUDEDIR}/__format
417FMT_HEADERS+=	format_arg.h
418FMT_HEADERS+=	format_args.h
419FMT_HEADERS+=	format_context.h
420FMT_HEADERS+=	format_error.h
421FMT_HEADERS+=	format_fwd.h
422FMT_HEADERS+=	format_parse_context.h
423FMT_HEADERS+=	format_string.h
424FMT_HEADERS+=	format_to_n_result.h
425FMT_HEADERS+=	formatter.h
426FMT_HEADERS+=	formatter_bool.h
427FMT_HEADERS+=	formatter_char.h
428FMT_HEADERS+=	formatter_integer.h
429FMT_HEADERS+=	formatter_integral.h
430FMT_HEADERS+=	formatter_string.h
431FMT_HEADERS+=	parser_std_format_spec.h
432.for hdr in ${FMT_HEADERS}
433FMT+=		${HDRDIR}/__format/${hdr}
434.endfor
435
436INCSGROUPS+=	FUN
437FUNDIR=		${CXXINCLUDEDIR}/__functional
438FUN_HEADERS+=	binary_function.h
439FUN_HEADERS+=	binary_negate.h
440FUN_HEADERS+=	bind.h
441FUN_HEADERS+=	bind_back.h
442FUN_HEADERS+=	bind_front.h
443FUN_HEADERS+=	binder1st.h
444FUN_HEADERS+=	binder2nd.h
445FUN_HEADERS+=	compose.h
446FUN_HEADERS+=	default_searcher.h
447FUN_HEADERS+=	function.h
448FUN_HEADERS+=	hash.h
449FUN_HEADERS+=	identity.h
450FUN_HEADERS+=	invoke.h
451FUN_HEADERS+=	is_transparent.h
452FUN_HEADERS+=	mem_fn.h
453FUN_HEADERS+=	mem_fun_ref.h
454FUN_HEADERS+=	not_fn.h
455FUN_HEADERS+=	operations.h
456FUN_HEADERS+=	perfect_forward.h
457FUN_HEADERS+=	pointer_to_binary_function.h
458FUN_HEADERS+=	pointer_to_unary_function.h
459FUN_HEADERS+=	ranges_operations.h
460FUN_HEADERS+=	reference_wrapper.h
461FUN_HEADERS+=	unary_function.h
462FUN_HEADERS+=	unary_negate.h
463FUN_HEADERS+=	unwrap_ref.h
464FUN_HEADERS+=	weak_result_type.h
465.for hdr in ${FUN_HEADERS}
466FUN+=		${HDRDIR}/__functional/${hdr}
467.endfor
468
469INCSGROUPS+=	IT
470ITDIR=		${CXXINCLUDEDIR}/__iterator
471IT_HEADERS+=	access.h
472IT_HEADERS+=	advance.h
473IT_HEADERS+=	back_insert_iterator.h
474IT_HEADERS+=	common_iterator.h
475IT_HEADERS+=	concepts.h
476IT_HEADERS+=	counted_iterator.h
477IT_HEADERS+=	data.h
478IT_HEADERS+=	default_sentinel.h
479IT_HEADERS+=	distance.h
480IT_HEADERS+=	empty.h
481IT_HEADERS+=	erase_if_container.h
482IT_HEADERS+=	front_insert_iterator.h
483IT_HEADERS+=	incrementable_traits.h
484IT_HEADERS+=	insert_iterator.h
485IT_HEADERS+=	istream_iterator.h
486IT_HEADERS+=	istreambuf_iterator.h
487IT_HEADERS+=	iter_move.h
488IT_HEADERS+=	iter_swap.h
489IT_HEADERS+=	iterator.h
490IT_HEADERS+=	iterator_traits.h
491IT_HEADERS+=	move_iterator.h
492IT_HEADERS+=	next.h
493IT_HEADERS+=	ostream_iterator.h
494IT_HEADERS+=	ostreambuf_iterator.h
495IT_HEADERS+=	prev.h
496IT_HEADERS+=	projected.h
497IT_HEADERS+=	readable_traits.h
498IT_HEADERS+=	reverse_access.h
499IT_HEADERS+=	reverse_iterator.h
500IT_HEADERS+=	size.h
501IT_HEADERS+=	unreachable_sentinel.h
502IT_HEADERS+=	wrap_iter.h
503.for hdr in ${IT_HEADERS}
504IT+=		${HDRDIR}/__iterator/${hdr}
505.endfor
506
507INCSGROUPS+=	MEM
508MEMDIR=		${CXXINCLUDEDIR}/__memory
509MEM_HEADERS+=	addressof.h
510MEM_HEADERS+=	allocation_guard.h
511MEM_HEADERS+=	allocator.h
512MEM_HEADERS+=	allocator_arg_t.h
513MEM_HEADERS+=	allocator_traits.h
514MEM_HEADERS+=	auto_ptr.h
515MEM_HEADERS+=	compressed_pair.h
516MEM_HEADERS+=	construct_at.h
517MEM_HEADERS+=	pointer_traits.h
518MEM_HEADERS+=	raw_storage_iterator.h
519MEM_HEADERS+=	shared_ptr.h
520MEM_HEADERS+=	temporary_buffer.h
521MEM_HEADERS+=	uninitialized_algorithms.h
522MEM_HEADERS+=	unique_ptr.h
523MEM_HEADERS+=	uses_allocator.h
524.for hdr in ${MEM_HEADERS}
525MEM+=		${HDRDIR}/__memory/${hdr}
526.endfor
527
528INCSGROUPS+=	RND
529RNDDIR=		${CXXINCLUDEDIR}/__random
530RND_HEADERS+=	uniform_int_distribution.h
531.for hdr in ${RND_HEADERS}
532RND+=		${HDRDIR}/__random/${hdr}
533.endfor
534
535INCSGROUPS+=	RNG
536RNGDIR=		${CXXINCLUDEDIR}/__ranges
537RNG_HEADERS+=	access.h
538RNG_HEADERS+=	all.h
539RNG_HEADERS+=	common_view.h
540RNG_HEADERS+=	concepts.h
541RNG_HEADERS+=	copyable_box.h
542RNG_HEADERS+=	counted.h
543RNG_HEADERS+=	dangling.h
544RNG_HEADERS+=	data.h
545RNG_HEADERS+=	drop_view.h
546RNG_HEADERS+=	empty.h
547RNG_HEADERS+=	empty_view.h
548RNG_HEADERS+=	enable_borrowed_range.h
549RNG_HEADERS+=	enable_view.h
550RNG_HEADERS+=	iota_view.h
551RNG_HEADERS+=	join_view.h
552RNG_HEADERS+=	non_propagating_cache.h
553RNG_HEADERS+=	range_adaptor.h
554RNG_HEADERS+=	ref_view.h
555RNG_HEADERS+=	reverse_view.h
556RNG_HEADERS+=	single_view.h
557RNG_HEADERS+=	size.h
558RNG_HEADERS+=	subrange.h
559RNG_HEADERS+=	take_view.h
560RNG_HEADERS+=	transform_view.h
561RNG_HEADERS+=	view_interface.h
562.for hdr in ${RNG_HEADERS}
563RNG+=		${HDRDIR}/__ranges/${hdr}
564.endfor
565
566
567INCSGROUPS+=	THR
568THRDIR=		${CXXINCLUDEDIR}/__thread
569THR_HEADERS+=	poll_with_backoff.h
570.for hdr in ${THR_HEADERS}
571THR+=		${HDRDIR}/__thread/${hdr}
572.endfor
573
574INCSGROUPS+=	UTL
575UTLDIR=		${CXXINCLUDEDIR}/__utility
576UTL_HEADERS+=	as_const.h
577UTL_HEADERS+=	cmp.h
578UTL_HEADERS+=	decay_copy.h
579UTL_HEADERS+=	declval.h
580UTL_HEADERS+=	exchange.h
581UTL_HEADERS+=	forward.h
582UTL_HEADERS+=	in_place.h
583UTL_HEADERS+=	integer_sequence.h
584UTL_HEADERS+=	move.h
585UTL_HEADERS+=	pair.h
586UTL_HEADERS+=	piecewise_construct.h
587UTL_HEADERS+=	rel_ops.h
588UTL_HEADERS+=	swap.h
589UTL_HEADERS+=	to_underlying.h
590.for hdr in ${UTL_HEADERS}
591UTL+=		${HDRDIR}/__utility/${hdr}
592.endfor
593
594INCSGROUPS+=	VAR
595VAR_HEADERS+=	monostate.h
596VARDIR=	${CXXINCLUDEDIR}/__variant
597.for hdr in ${VAR_HEADERS}
598VAR+=		${HDRDIR}/__variant/${hdr}
599.endfor
600
601INCSGROUPS+=	EXP
602EXPDIR=		${CXXINCLUDEDIR}/experimental
603EXP_HEADERS+=	__config
604EXP_HEADERS+=	__memory
605EXP_HEADERS+=	algorithm
606EXP_HEADERS+=	coroutine
607EXP_HEADERS+=	deque
608EXP_HEADERS+=	filesystem
609EXP_HEADERS+=	forward_list
610EXP_HEADERS+=	functional
611EXP_HEADERS+=	iterator
612EXP_HEADERS+=	list
613EXP_HEADERS+=	map
614EXP_HEADERS+=	memory_resource
615EXP_HEADERS+=	propagate_const
616EXP_HEADERS+=	regex
617EXP_HEADERS+=	set
618EXP_HEADERS+=	simd
619EXP_HEADERS+=	string
620EXP_HEADERS+=	type_traits
621EXP_HEADERS+=	unordered_map
622EXP_HEADERS+=	unordered_set
623EXP_HEADERS+=	utility
624EXP_HEADERS+=	vector
625.for hdr in ${EXP_HEADERS}
626EXP+=		${HDRDIR}/experimental/${hdr}
627.endfor
628
629INCSGROUPS+=	EXT
630EXTDIR=		${CXXINCLUDEDIR}/ext
631EXT_HEADERS+=	__hash
632EXT_HEADERS+=	hash_map
633EXT_HEADERS+=	hash_set
634.for hdr in ${EXT_HEADERS}
635EXT+=		${HDRDIR}/ext/${hdr}
636.endfor
637
638.include <bsd.lib.mk>
639