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