freebsd-src/lib/libc++/Makefile
Warner Losh d0b2dbfa0e Remove $FreeBSD$: one-line sh pattern
Remove /^\s*#[#!]?\s*\$FreeBSD\$.*$\n/
2023-08-16 11:55:03 -06:00

1140 lines
30 KiB
Makefile

SHLIBDIR?= /lib
.include <src.opts.mk>
PACKAGE= clibs
_LIBCXXRTDIR= ${SRCTOP}/contrib/libcxxrt
HDRDIR= ${SRCTOP}/contrib/llvm-project/libcxx/include
SRCDIR= ${SRCTOP}/contrib/llvm-project/libcxx/src
CXXINCLUDEDIR= ${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
.PATH: ${SRCDIR}
LIB= c++
SHLIB_MAJOR= 1
SHLIB_LDSCRIPT= libc++.ldscript
SRCS+= algorithm.cpp
SRCS+= any.cpp
SRCS+= atomic.cpp
SRCS+= barrier.cpp
SRCS+= bind.cpp
SRCS+= charconv.cpp
SRCS+= chrono.cpp
SRCS+= condition_variable.cpp
SRCS+= condition_variable_destructor.cpp
SRCS+= debug.cpp
SRCS+= exception.cpp
SRCS+= filesystem/directory_iterator.cpp
SRCS+= filesystem/int128_builtins.cpp
SRCS+= filesystem/operations.cpp
SRCS+= functional.cpp
SRCS+= future.cpp
SRCS+= hash.cpp
SRCS+= ios.cpp
SRCS+= ios.instantiations.cpp
SRCS+= iostream.cpp
SRCS+= legacy_debug_handler.cpp
SRCS+= legacy_pointer_safety.cpp
SRCS+= locale.cpp
SRCS+= memory.cpp
SRCS+= memory_resource.cpp
SRCS+= mutex.cpp
SRCS+= mutex_destructor.cpp
SRCS+= new.cpp
SRCS+= optional.cpp
SRCS+= random.cpp
SRCS+= random_shuffle.cpp
SRCS+= regex.cpp
SRCS+= ryu/d2fixed.cpp
SRCS+= ryu/d2s.cpp
SRCS+= ryu/f2s.cpp
SRCS+= shared_mutex.cpp
SRCS+= stdexcept.cpp
SRCS+= string.cpp
SRCS+= strstream.cpp
SRCS+= system_error.cpp
SRCS+= thread.cpp
SRCS+= typeinfo.cpp
SRCS+= utility.cpp
SRCS+= valarray.cpp
SRCS+= variant.cpp
SRCS+= vector.cpp
SRCS+= verbose_abort.cpp
CXXRT_SRCS+= auxhelper.cc
CXXRT_SRCS+= dynamic_cast.cc
CXXRT_SRCS+= exception.cc
CXXRT_SRCS+= guard.cc
CXXRT_SRCS+= libelftc_dem_gnu3.c
CXXRT_SRCS+= memory.cc
CXXRT_SRCS+= stdexcept.cc
CXXRT_SRCS+= terminate.cc
CXXRT_SRCS+= typeinfo.cc
.for _S in ${CXXRT_SRCS}
CLEANFILES+= cxxrt_${_S}
STATICOBJS+= cxxrt_${_S:R}.o
cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
ln -sf ${.ALLSRC} ${.TARGET}
.endfor
WARNS?= 0
CFLAGS+= -isystem ${.CURDIR}
CFLAGS+= -isystem ${HDRDIR}
CFLAGS+= -isystem ${SRCDIR}
CFLAGS+= -isystem ${_LIBCXXRTDIR}
CFLAGS+= -nostdinc++
CFLAGS+= -nostdlib
CFLAGS+= -D_LIBCPP_BUILDING_LIBRARY
CFLAGS+= -DLIBCXXRT
CFLAGS+= -ffunction-sections
CFLAGS+= -fdata-sections
CXXSTD?= c++20
LIBADD+= cxxrt
INCSGROUPS+= STD
STDDIR= ${CXXINCLUDEDIR}
STD_HEADERS+= __assert
STD_HEADERS+= __availability
STD_HEADERS+= __bit_reference
STD_HEADERS+= __bsd_locale_defaults.h
STD_HEADERS+= __bsd_locale_fallbacks.h
STD_HEADERS+= __config
STD_HEADERS+= __debug
STD_HEADERS+= __errc
STD_HEADERS+= __hash_table
STD_HEADERS+= __locale
STD_HEADERS+= __mbstate_t.h
STD_HEADERS+= __mutex_base
STD_HEADERS+= __node_handle
STD_HEADERS+= __split_buffer
STD_HEADERS+= __std_stream
STD_HEADERS+= __threading_support
STD_HEADERS+= __tree
STD_HEADERS+= __undef_macros
STD_HEADERS+= __verbose_abort
STD_HEADERS+= algorithm
STD_HEADERS+= any
STD_HEADERS+= array
STD_HEADERS+= atomic
STD_HEADERS+= barrier
STD_HEADERS+= bit
STD_HEADERS+= bitset
STD_HEADERS+= cassert
STD_HEADERS+= ccomplex
STD_HEADERS+= cctype
STD_HEADERS+= cerrno
STD_HEADERS+= cfenv
STD_HEADERS+= cfloat
STD_HEADERS+= charconv
STD_HEADERS+= chrono
STD_HEADERS+= cinttypes
STD_HEADERS+= ciso646
STD_HEADERS+= climits
STD_HEADERS+= clocale
STD_HEADERS+= cmath
STD_HEADERS+= codecvt
STD_HEADERS+= compare
STD_HEADERS+= complex
STD_HEADERS+= complex.h
STD_HEADERS+= concepts
STD_HEADERS+= condition_variable
STD_HEADERS+= coroutine
STD_HEADERS+= csetjmp
STD_HEADERS+= csignal
STD_HEADERS+= cstdarg
STD_HEADERS+= cstdbool
STD_HEADERS+= cstddef
STD_HEADERS+= cstdint
STD_HEADERS+= cstdio
STD_HEADERS+= cstdlib
STD_HEADERS+= cstring
STD_HEADERS+= ctgmath
STD_HEADERS+= ctime
STD_HEADERS+= ctype.h
STD_HEADERS+= cuchar
STD_HEADERS+= cwchar
STD_HEADERS+= cwctype
STD_HEADERS+= deque
STD_HEADERS+= errno.h
STD_HEADERS+= exception
STD_HEADERS+= execution
STD_HEADERS+= expected
STD_HEADERS+= fenv.h
STD_HEADERS+= filesystem
STD_HEADERS+= float.h
STD_HEADERS+= format
STD_HEADERS+= forward_list
STD_HEADERS+= fstream
STD_HEADERS+= functional
STD_HEADERS+= future
STD_HEADERS+= initializer_list
STD_HEADERS+= inttypes.h
STD_HEADERS+= iomanip
STD_HEADERS+= ios
STD_HEADERS+= iosfwd
STD_HEADERS+= iostream
STD_HEADERS+= istream
STD_HEADERS+= iterator
STD_HEADERS+= latch
STD_HEADERS+= libcxx.imp
STD_HEADERS+= limits
STD_HEADERS+= limits.h
STD_HEADERS+= list
STD_HEADERS+= locale
STD_HEADERS+= locale.h
STD_HEADERS+= map
STD_HEADERS+= math.h
STD_HEADERS+= memory
STD_HEADERS+= memory_resource
STD_HEADERS+= mutex
STD_HEADERS+= new
STD_HEADERS+= numbers
STD_HEADERS+= numeric
STD_HEADERS+= optional
STD_HEADERS+= ostream
STD_HEADERS+= queue
STD_HEADERS+= random
STD_HEADERS+= ranges
STD_HEADERS+= ratio
STD_HEADERS+= regex
STD_HEADERS+= scoped_allocator
STD_HEADERS+= semaphore
STD_HEADERS+= set
STD_HEADERS+= setjmp.h
STD_HEADERS+= shared_mutex
STD_HEADERS+= source_location
STD_HEADERS+= span
STD_HEADERS+= sstream
STD_HEADERS+= stack
STD_HEADERS+= stdatomic.h
STD_HEADERS+= stdbool.h
STD_HEADERS+= stddef.h
STD_HEADERS+= stdexcept
STD_HEADERS+= stdint.h
STD_HEADERS+= stdio.h
STD_HEADERS+= stdlib.h
STD_HEADERS+= streambuf
STD_HEADERS+= string
STD_HEADERS+= string.h
STD_HEADERS+= string_view
STD_HEADERS+= strstream
STD_HEADERS+= system_error
STD_HEADERS+= tgmath.h
STD_HEADERS+= thread
STD_HEADERS+= tuple
STD_HEADERS+= type_traits
STD_HEADERS+= typeindex
STD_HEADERS+= typeinfo
STD_HEADERS+= uchar.h
STD_HEADERS+= unordered_map
STD_HEADERS+= unordered_set
STD_HEADERS+= utility
STD_HEADERS+= valarray
STD_HEADERS+= variant
STD_HEADERS+= vector
STD_HEADERS+= version
STD_HEADERS+= wchar.h
STD_HEADERS+= wctype.h
.for hdr in ${STD_HEADERS}
STD+= ${HDRDIR}/${hdr}
.endfor
# Special case for __config_site, which as of libc++ 12.0.0 is generated by
# CMake, and as of 13.0.0 installed side-by-side with__config.
STD+= ${.CURDIR}/__config_site
# Special case for module.modulemap, which as of libc++ 15.0.0 is generated by
# CMake.
STD+= ${.CURDIR}/module.modulemap
RT_HEADERS+= cxxabi.h
.for hdr in ${RT_HEADERS}
STD+= ${_LIBCXXRTDIR}/${hdr}
.endfor
INCSGROUPS+= ALG
ALGDIR= ${CXXINCLUDEDIR}/__algorithm
ALG_HEADERS+= adjacent_find.h
ALG_HEADERS+= all_of.h
ALG_HEADERS+= any_of.h
ALG_HEADERS+= binary_search.h
ALG_HEADERS+= clamp.h
ALG_HEADERS+= comp.h
ALG_HEADERS+= comp_ref_type.h
ALG_HEADERS+= copy.h
ALG_HEADERS+= copy_backward.h
ALG_HEADERS+= copy_if.h
ALG_HEADERS+= copy_move_common.h
ALG_HEADERS+= copy_n.h
ALG_HEADERS+= count.h
ALG_HEADERS+= count_if.h
ALG_HEADERS+= equal.h
ALG_HEADERS+= equal_range.h
ALG_HEADERS+= fill.h
ALG_HEADERS+= fill_n.h
ALG_HEADERS+= find.h
ALG_HEADERS+= find_end.h
ALG_HEADERS+= find_first_of.h
ALG_HEADERS+= find_if.h
ALG_HEADERS+= find_if_not.h
ALG_HEADERS+= for_each.h
ALG_HEADERS+= for_each_n.h
ALG_HEADERS+= generate.h
ALG_HEADERS+= generate_n.h
ALG_HEADERS+= half_positive.h
ALG_HEADERS+= in_found_result.h
ALG_HEADERS+= in_fun_result.h
ALG_HEADERS+= in_in_out_result.h
ALG_HEADERS+= in_in_result.h
ALG_HEADERS+= in_out_out_result.h
ALG_HEADERS+= in_out_result.h
ALG_HEADERS+= includes.h
ALG_HEADERS+= inplace_merge.h
ALG_HEADERS+= is_heap.h
ALG_HEADERS+= is_heap_until.h
ALG_HEADERS+= is_partitioned.h
ALG_HEADERS+= is_permutation.h
ALG_HEADERS+= is_sorted.h
ALG_HEADERS+= is_sorted_until.h
ALG_HEADERS+= iter_swap.h
ALG_HEADERS+= iterator_operations.h
ALG_HEADERS+= lexicographical_compare.h
ALG_HEADERS+= lower_bound.h
ALG_HEADERS+= make_heap.h
ALG_HEADERS+= make_projected.h
ALG_HEADERS+= max.h
ALG_HEADERS+= max_element.h
ALG_HEADERS+= merge.h
ALG_HEADERS+= min.h
ALG_HEADERS+= min_element.h
ALG_HEADERS+= min_max_result.h
ALG_HEADERS+= minmax.h
ALG_HEADERS+= minmax_element.h
ALG_HEADERS+= mismatch.h
ALG_HEADERS+= move.h
ALG_HEADERS+= move_backward.h
ALG_HEADERS+= next_permutation.h
ALG_HEADERS+= none_of.h
ALG_HEADERS+= nth_element.h
ALG_HEADERS+= partial_sort.h
ALG_HEADERS+= partial_sort_copy.h
ALG_HEADERS+= partition.h
ALG_HEADERS+= partition_copy.h
ALG_HEADERS+= partition_point.h
ALG_HEADERS+= pop_heap.h
ALG_HEADERS+= prev_permutation.h
ALG_HEADERS+= push_heap.h
ALG_HEADERS+= ranges_adjacent_find.h
ALG_HEADERS+= ranges_all_of.h
ALG_HEADERS+= ranges_any_of.h
ALG_HEADERS+= ranges_binary_search.h
ALG_HEADERS+= ranges_clamp.h
ALG_HEADERS+= ranges_copy.h
ALG_HEADERS+= ranges_copy_backward.h
ALG_HEADERS+= ranges_copy_if.h
ALG_HEADERS+= ranges_copy_n.h
ALG_HEADERS+= ranges_count.h
ALG_HEADERS+= ranges_count_if.h
ALG_HEADERS+= ranges_equal.h
ALG_HEADERS+= ranges_equal_range.h
ALG_HEADERS+= ranges_fill.h
ALG_HEADERS+= ranges_fill_n.h
ALG_HEADERS+= ranges_find.h
ALG_HEADERS+= ranges_find_end.h
ALG_HEADERS+= ranges_find_first_of.h
ALG_HEADERS+= ranges_find_if.h
ALG_HEADERS+= ranges_find_if_not.h
ALG_HEADERS+= ranges_for_each.h
ALG_HEADERS+= ranges_for_each_n.h
ALG_HEADERS+= ranges_generate.h
ALG_HEADERS+= ranges_generate_n.h
ALG_HEADERS+= ranges_includes.h
ALG_HEADERS+= ranges_inplace_merge.h
ALG_HEADERS+= ranges_is_heap.h
ALG_HEADERS+= ranges_is_heap_until.h
ALG_HEADERS+= ranges_is_partitioned.h
ALG_HEADERS+= ranges_is_permutation.h
ALG_HEADERS+= ranges_is_sorted.h
ALG_HEADERS+= ranges_is_sorted_until.h
ALG_HEADERS+= ranges_iterator_concept.h
ALG_HEADERS+= ranges_lexicographical_compare.h
ALG_HEADERS+= ranges_lower_bound.h
ALG_HEADERS+= ranges_make_heap.h
ALG_HEADERS+= ranges_max.h
ALG_HEADERS+= ranges_max_element.h
ALG_HEADERS+= ranges_merge.h
ALG_HEADERS+= ranges_min.h
ALG_HEADERS+= ranges_min_element.h
ALG_HEADERS+= ranges_minmax.h
ALG_HEADERS+= ranges_minmax_element.h
ALG_HEADERS+= ranges_mismatch.h
ALG_HEADERS+= ranges_move.h
ALG_HEADERS+= ranges_move_backward.h
ALG_HEADERS+= ranges_next_permutation.h
ALG_HEADERS+= ranges_none_of.h
ALG_HEADERS+= ranges_nth_element.h
ALG_HEADERS+= ranges_partial_sort.h
ALG_HEADERS+= ranges_partial_sort_copy.h
ALG_HEADERS+= ranges_partition.h
ALG_HEADERS+= ranges_partition_copy.h
ALG_HEADERS+= ranges_partition_point.h
ALG_HEADERS+= ranges_pop_heap.h
ALG_HEADERS+= ranges_prev_permutation.h
ALG_HEADERS+= ranges_push_heap.h
ALG_HEADERS+= ranges_remove.h
ALG_HEADERS+= ranges_remove_copy.h
ALG_HEADERS+= ranges_remove_copy_if.h
ALG_HEADERS+= ranges_remove_if.h
ALG_HEADERS+= ranges_replace.h
ALG_HEADERS+= ranges_replace_copy.h
ALG_HEADERS+= ranges_replace_copy_if.h
ALG_HEADERS+= ranges_replace_if.h
ALG_HEADERS+= ranges_reverse.h
ALG_HEADERS+= ranges_reverse_copy.h
ALG_HEADERS+= ranges_rotate.h
ALG_HEADERS+= ranges_rotate_copy.h
ALG_HEADERS+= ranges_sample.h
ALG_HEADERS+= ranges_search.h
ALG_HEADERS+= ranges_search_n.h
ALG_HEADERS+= ranges_set_difference.h
ALG_HEADERS+= ranges_set_intersection.h
ALG_HEADERS+= ranges_set_symmetric_difference.h
ALG_HEADERS+= ranges_set_union.h
ALG_HEADERS+= ranges_shuffle.h
ALG_HEADERS+= ranges_sort.h
ALG_HEADERS+= ranges_sort_heap.h
ALG_HEADERS+= ranges_stable_partition.h
ALG_HEADERS+= ranges_stable_sort.h
ALG_HEADERS+= ranges_swap_ranges.h
ALG_HEADERS+= ranges_transform.h
ALG_HEADERS+= ranges_unique.h
ALG_HEADERS+= ranges_unique_copy.h
ALG_HEADERS+= ranges_upper_bound.h
ALG_HEADERS+= remove.h
ALG_HEADERS+= remove_copy.h
ALG_HEADERS+= remove_copy_if.h
ALG_HEADERS+= remove_if.h
ALG_HEADERS+= replace.h
ALG_HEADERS+= replace_copy.h
ALG_HEADERS+= replace_copy_if.h
ALG_HEADERS+= replace_if.h
ALG_HEADERS+= reverse.h
ALG_HEADERS+= reverse_copy.h
ALG_HEADERS+= rotate.h
ALG_HEADERS+= rotate_copy.h
ALG_HEADERS+= sample.h
ALG_HEADERS+= search.h
ALG_HEADERS+= search_n.h
ALG_HEADERS+= set_difference.h
ALG_HEADERS+= set_intersection.h
ALG_HEADERS+= set_symmetric_difference.h
ALG_HEADERS+= set_union.h
ALG_HEADERS+= shift_left.h
ALG_HEADERS+= shift_right.h
ALG_HEADERS+= shuffle.h
ALG_HEADERS+= sift_down.h
ALG_HEADERS+= sort.h
ALG_HEADERS+= sort_heap.h
ALG_HEADERS+= stable_partition.h
ALG_HEADERS+= stable_sort.h
ALG_HEADERS+= swap_ranges.h
ALG_HEADERS+= transform.h
ALG_HEADERS+= uniform_random_bit_generator_adaptor.h
ALG_HEADERS+= unique.h
ALG_HEADERS+= unique_copy.h
ALG_HEADERS+= unwrap_iter.h
ALG_HEADERS+= unwrap_range.h
ALG_HEADERS+= upper_bound.h
.for hdr in ${ALG_HEADERS}
ALG+= ${HDRDIR}/__algorithm/${hdr}
.endfor
INCSGROUPS+= BIT
BITDIR= ${CXXINCLUDEDIR}/__bit
BIT_HEADERS+= bit_cast.h
BIT_HEADERS+= bit_ceil.h
BIT_HEADERS+= bit_floor.h
BIT_HEADERS+= bit_log2.h
BIT_HEADERS+= bit_width.h
BIT_HEADERS+= blsr.h
BIT_HEADERS+= byteswap.h
BIT_HEADERS+= countl.h
BIT_HEADERS+= countr.h
BIT_HEADERS+= endian.h
BIT_HEADERS+= has_single_bit.h
BIT_HEADERS+= popcount.h
BIT_HEADERS+= rotate.h
.for hdr in ${BIT_HEADERS}
BIT+= ${HDRDIR}/__bit/${hdr}
.endfor
INCSGROUPS+= CHC
CHCDIR= ${CXXINCLUDEDIR}/__charconv
CHC_HEADERS+= chars_format.h
CHC_HEADERS+= from_chars_result.h
CHC_HEADERS+= tables.h
CHC_HEADERS+= to_chars_base_10.h
CHC_HEADERS+= to_chars_result.h
.for hdr in ${CHC_HEADERS}
CHC+= ${HDRDIR}/__charconv/${hdr}
.endfor
INCSGROUPS+= CHR
CHRDIR= ${CXXINCLUDEDIR}/__chrono
CHR_HEADERS+= calendar.h
CHR_HEADERS+= convert_to_timespec.h
CHR_HEADERS+= convert_to_tm.h
CHR_HEADERS+= day.h
CHR_HEADERS+= duration.h
CHR_HEADERS+= file_clock.h
CHR_HEADERS+= formatter.h
CHR_HEADERS+= hh_mm_ss.h
CHR_HEADERS+= high_resolution_clock.h
CHR_HEADERS+= literals.h
CHR_HEADERS+= month.h
CHR_HEADERS+= month_weekday.h
CHR_HEADERS+= monthday.h
CHR_HEADERS+= ostream.h
CHR_HEADERS+= parser_std_format_spec.h
CHR_HEADERS+= statically_widen.h
CHR_HEADERS+= steady_clock.h
CHR_HEADERS+= system_clock.h
CHR_HEADERS+= time_point.h
CHR_HEADERS+= weekday.h
CHR_HEADERS+= year.h
CHR_HEADERS+= year_month.h
CHR_HEADERS+= year_month_day.h
CHR_HEADERS+= year_month_weekday.h
.for hdr in ${CHR_HEADERS}
CHR+= ${HDRDIR}/__chrono/${hdr}
.endfor
INCSGROUPS+= CMP
CMPDIR= ${CXXINCLUDEDIR}/__compare
CMP_HEADERS+= common_comparison_category.h
CMP_HEADERS+= compare_partial_order_fallback.h
CMP_HEADERS+= compare_strong_order_fallback.h
CMP_HEADERS+= compare_three_way.h
CMP_HEADERS+= compare_three_way_result.h
CMP_HEADERS+= compare_weak_order_fallback.h
CMP_HEADERS+= is_eq.h
CMP_HEADERS+= ordering.h
CMP_HEADERS+= partial_order.h
CMP_HEADERS+= strong_order.h
CMP_HEADERS+= synth_three_way.h
CMP_HEADERS+= three_way_comparable.h
CMP_HEADERS+= weak_order.h
.for hdr in ${CMP_HEADERS}
CMP+= ${HDRDIR}/__compare/${hdr}
.endfor
INCSGROUPS+= CON
CONDIR= ${CXXINCLUDEDIR}/__concepts
CON_HEADERS+= arithmetic.h
CON_HEADERS+= assignable.h
CON_HEADERS+= boolean_testable.h
CON_HEADERS+= class_or_enum.h
CON_HEADERS+= common_reference_with.h
CON_HEADERS+= common_with.h
CON_HEADERS+= constructible.h
CON_HEADERS+= convertible_to.h
CON_HEADERS+= copyable.h
CON_HEADERS+= derived_from.h
CON_HEADERS+= destructible.h
CON_HEADERS+= different_from.h
CON_HEADERS+= equality_comparable.h
CON_HEADERS+= invocable.h
CON_HEADERS+= movable.h
CON_HEADERS+= predicate.h
CON_HEADERS+= regular.h
CON_HEADERS+= relation.h
CON_HEADERS+= same_as.h
CON_HEADERS+= semiregular.h
CON_HEADERS+= swappable.h
CON_HEADERS+= totally_ordered.h
.for hdr in ${CON_HEADERS}
CON+= ${HDRDIR}/__concepts/${hdr}
.endfor
INCSGROUPS+= COR
CORDIR= ${CXXINCLUDEDIR}/__coroutine
COR_HEADERS+= coroutine_handle.h
COR_HEADERS+= coroutine_traits.h
COR_HEADERS+= noop_coroutine_handle.h
COR_HEADERS+= trivial_awaitables.h
.for hdr in ${COR_HEADERS}
COR+= ${HDRDIR}/__coroutine/${hdr}
.endfor
INCSGROUPS+= DBG
DBGDIR= ${CXXINCLUDEDIR}/__debug_utils
DBG_HEADERS+= randomize_range.h
.for hdr in ${DBG_HEADERS}
DBG+= ${HDRDIR}/__debug_utils/${hdr}
.endfor
INCSGROUPS+= EXC
EXCDIR= ${CXXINCLUDEDIR}/__expected
EXC_HEADERS+= bad_expected_access.h
EXC_HEADERS+= expected.h
EXC_HEADERS+= unexpect.h
EXC_HEADERS+= unexpected.h
.for hdr in ${EXC_HEADERS}
EXC+= ${HDRDIR}/__expected/${hdr}
.endfor
INCSGROUPS+= FS
FSDIR= ${CXXINCLUDEDIR}/__filesystem
FS_HEADERS+= copy_options.h
FS_HEADERS+= directory_entry.h
FS_HEADERS+= directory_iterator.h
FS_HEADERS+= directory_options.h
FS_HEADERS+= file_status.h
FS_HEADERS+= file_time_type.h
FS_HEADERS+= file_type.h
FS_HEADERS+= filesystem_error.h
FS_HEADERS+= operations.h
FS_HEADERS+= path.h
FS_HEADERS+= path_iterator.h
FS_HEADERS+= perm_options.h
FS_HEADERS+= perms.h
FS_HEADERS+= recursive_directory_iterator.h
FS_HEADERS+= space_info.h
FS_HEADERS+= u8path.h
.for hdr in ${FS_HEADERS}
FS+= ${HDRDIR}/__filesystem/${hdr}
.endfor
INCSGROUPS+= FMT
FMTDIR= ${CXXINCLUDEDIR}/__format
FMT_HEADERS+= buffer.h
FMT_HEADERS+= concepts.h
FMT_HEADERS+= container_adaptor.h
FMT_HEADERS+= enable_insertable.h
FMT_HEADERS+= escaped_output_table.h
FMT_HEADERS+= extended_grapheme_cluster_table.h
FMT_HEADERS+= format_arg.h
FMT_HEADERS+= format_arg_store.h
FMT_HEADERS+= format_args.h
FMT_HEADERS+= format_context.h
FMT_HEADERS+= format_error.h
FMT_HEADERS+= format_functions.h
FMT_HEADERS+= format_fwd.h
FMT_HEADERS+= format_parse_context.h
FMT_HEADERS+= format_string.h
FMT_HEADERS+= format_to_n_result.h
FMT_HEADERS+= formatter.h
FMT_HEADERS+= formatter_bool.h
FMT_HEADERS+= formatter_char.h
FMT_HEADERS+= formatter_floating_point.h
FMT_HEADERS+= formatter_integer.h
FMT_HEADERS+= formatter_integral.h
FMT_HEADERS+= formatter_output.h
FMT_HEADERS+= formatter_pointer.h
FMT_HEADERS+= formatter_string.h
FMT_HEADERS+= formatter_tuple.h
FMT_HEADERS+= parser_std_format_spec.h
FMT_HEADERS+= range_default_formatter.h
FMT_HEADERS+= range_formatter.h
FMT_HEADERS+= unicode.h
.for hdr in ${FMT_HEADERS}
FMT+= ${HDRDIR}/__format/${hdr}
.endfor
INCSGROUPS+= FUN
FUNDIR= ${CXXINCLUDEDIR}/__functional
FUN_HEADERS+= binary_function.h
FUN_HEADERS+= binary_negate.h
FUN_HEADERS+= bind.h
FUN_HEADERS+= bind_back.h
FUN_HEADERS+= bind_front.h
FUN_HEADERS+= binder1st.h
FUN_HEADERS+= binder2nd.h
FUN_HEADERS+= boyer_moore_searcher.h
FUN_HEADERS+= compose.h
FUN_HEADERS+= default_searcher.h
FUN_HEADERS+= function.h
FUN_HEADERS+= hash.h
FUN_HEADERS+= identity.h
FUN_HEADERS+= invoke.h
FUN_HEADERS+= is_transparent.h
FUN_HEADERS+= mem_fn.h
FUN_HEADERS+= mem_fun_ref.h
FUN_HEADERS+= not_fn.h
FUN_HEADERS+= operations.h
FUN_HEADERS+= perfect_forward.h
FUN_HEADERS+= pointer_to_binary_function.h
FUN_HEADERS+= pointer_to_unary_function.h
FUN_HEADERS+= ranges_operations.h
FUN_HEADERS+= reference_wrapper.h
FUN_HEADERS+= unary_function.h
FUN_HEADERS+= unary_negate.h
FUN_HEADERS+= unwrap_ref.h
FUN_HEADERS+= weak_result_type.h
.for hdr in ${FUN_HEADERS}
FUN+= ${HDRDIR}/__functional/${hdr}
.endfor
INCSGROUPS+= FWD
FWDDIR= ${CXXINCLUDEDIR}/__fwd
FWD_HEADERS+= array.h
FWD_HEADERS+= get.h
FWD_HEADERS+= hash.h
FWD_HEADERS+= memory_resource.h
FWD_HEADERS+= pair.h
FWD_HEADERS+= span.h
FWD_HEADERS+= string.h
FWD_HEADERS+= string_view.h
FWD_HEADERS+= subrange.h
FWD_HEADERS+= tuple.h
.for hdr in ${FWD_HEADERS}
FWD+= ${HDRDIR}/__fwd/${hdr}
.endfor
INCSGROUPS+= IOS
IOSDIR= ${CXXINCLUDEDIR}/__ios
IOS_HEADERS+= fpos.h
.for hdr in ${IOS_HEADERS}
IOS+= ${HDRDIR}/__ios/${hdr}
.endfor
INCSGROUPS+= IT
ITDIR= ${CXXINCLUDEDIR}/__iterator
IT_HEADERS+= access.h
IT_HEADERS+= advance.h
IT_HEADERS+= back_insert_iterator.h
IT_HEADERS+= bounded_iter.h
IT_HEADERS+= common_iterator.h
IT_HEADERS+= concepts.h
IT_HEADERS+= counted_iterator.h
IT_HEADERS+= data.h
IT_HEADERS+= default_sentinel.h
IT_HEADERS+= distance.h
IT_HEADERS+= empty.h
IT_HEADERS+= erase_if_container.h
IT_HEADERS+= front_insert_iterator.h
IT_HEADERS+= incrementable_traits.h
IT_HEADERS+= indirectly_comparable.h
IT_HEADERS+= insert_iterator.h
IT_HEADERS+= istream_iterator.h
IT_HEADERS+= istreambuf_iterator.h
IT_HEADERS+= iter_move.h
IT_HEADERS+= iter_swap.h
IT_HEADERS+= iterator.h
IT_HEADERS+= iterator_traits.h
IT_HEADERS+= iterator_with_data.h
IT_HEADERS+= mergeable.h
IT_HEADERS+= move_iterator.h
IT_HEADERS+= move_sentinel.h
IT_HEADERS+= next.h
IT_HEADERS+= ostream_iterator.h
IT_HEADERS+= ostreambuf_iterator.h
IT_HEADERS+= permutable.h
IT_HEADERS+= prev.h
IT_HEADERS+= projected.h
IT_HEADERS+= readable_traits.h
IT_HEADERS+= reverse_access.h
IT_HEADERS+= reverse_iterator.h
IT_HEADERS+= segmented_iterator.h
IT_HEADERS+= size.h
IT_HEADERS+= sortable.h
IT_HEADERS+= unreachable_sentinel.h
IT_HEADERS+= wrap_iter.h
.for hdr in ${IT_HEADERS}
IT+= ${HDRDIR}/__iterator/${hdr}
.endfor
INCSGROUPS+= MEM
MEMDIR= ${CXXINCLUDEDIR}/__memory
MEM_HEADERS+= addressof.h
MEM_HEADERS+= align.h
MEM_HEADERS+= allocate_at_least.h
MEM_HEADERS+= allocation_guard.h
MEM_HEADERS+= allocator.h
MEM_HEADERS+= allocator_arg_t.h
MEM_HEADERS+= allocator_destructor.h
MEM_HEADERS+= allocator_traits.h
MEM_HEADERS+= assume_aligned.h
MEM_HEADERS+= auto_ptr.h
MEM_HEADERS+= builtin_new_allocator.h
MEM_HEADERS+= compressed_pair.h
MEM_HEADERS+= concepts.h
MEM_HEADERS+= construct_at.h
MEM_HEADERS+= destruct_n.h
MEM_HEADERS+= pointer_traits.h
MEM_HEADERS+= ranges_construct_at.h
MEM_HEADERS+= ranges_uninitialized_algorithms.h
MEM_HEADERS+= raw_storage_iterator.h
MEM_HEADERS+= shared_ptr.h
MEM_HEADERS+= swap_allocator.h
MEM_HEADERS+= temp_value.h
MEM_HEADERS+= temporary_buffer.h
MEM_HEADERS+= uninitialized_algorithms.h
MEM_HEADERS+= unique_ptr.h
MEM_HEADERS+= uses_allocator.h
MEM_HEADERS+= uses_allocator_construction.h
MEM_HEADERS+= voidify.h
.for hdr in ${MEM_HEADERS}
MEM+= ${HDRDIR}/__memory/${hdr}
.endfor
INCSGROUPS+= MER
MERDIR= ${CXXINCLUDEDIR}/__memory_resource
MER_HEADERS+= memory_resource.h
MER_HEADERS+= monotonic_buffer_resource.h
MER_HEADERS+= polymorphic_allocator.h
MER_HEADERS+= pool_options.h
MER_HEADERS+= synchronized_pool_resource.h
MER_HEADERS+= unsynchronized_pool_resource.h
.for hdr in ${MER_HEADERS}
MER+= ${HDRDIR}/__memory_resource/${hdr}
.endfor
INCSGROUPS+= NUM
NUMDIR= ${CXXINCLUDEDIR}/__numeric
NUM_HEADERS+= accumulate.h
NUM_HEADERS+= adjacent_difference.h
NUM_HEADERS+= exclusive_scan.h
NUM_HEADERS+= gcd_lcm.h
NUM_HEADERS+= inclusive_scan.h
NUM_HEADERS+= inner_product.h
NUM_HEADERS+= iota.h
NUM_HEADERS+= midpoint.h
NUM_HEADERS+= partial_sum.h
NUM_HEADERS+= reduce.h
NUM_HEADERS+= transform_exclusive_scan.h
NUM_HEADERS+= transform_inclusive_scan.h
NUM_HEADERS+= transform_reduce.h
.for hdr in ${NUM_HEADERS}
NUM+= ${HDRDIR}/__numeric/${hdr}
.endfor
INCSGROUPS+= RND
RNDDIR= ${CXXINCLUDEDIR}/__random
RND_HEADERS+= bernoulli_distribution.h
RND_HEADERS+= binomial_distribution.h
RND_HEADERS+= cauchy_distribution.h
RND_HEADERS+= chi_squared_distribution.h
RND_HEADERS+= clamp_to_integral.h
RND_HEADERS+= default_random_engine.h
RND_HEADERS+= discard_block_engine.h
RND_HEADERS+= discrete_distribution.h
RND_HEADERS+= exponential_distribution.h
RND_HEADERS+= extreme_value_distribution.h
RND_HEADERS+= fisher_f_distribution.h
RND_HEADERS+= gamma_distribution.h
RND_HEADERS+= generate_canonical.h
RND_HEADERS+= geometric_distribution.h
RND_HEADERS+= independent_bits_engine.h
RND_HEADERS+= is_seed_sequence.h
RND_HEADERS+= is_valid.h
RND_HEADERS+= knuth_b.h
RND_HEADERS+= linear_congruential_engine.h
RND_HEADERS+= log2.h
RND_HEADERS+= lognormal_distribution.h
RND_HEADERS+= mersenne_twister_engine.h
RND_HEADERS+= negative_binomial_distribution.h
RND_HEADERS+= normal_distribution.h
RND_HEADERS+= piecewise_constant_distribution.h
RND_HEADERS+= piecewise_linear_distribution.h
RND_HEADERS+= poisson_distribution.h
RND_HEADERS+= random_device.h
RND_HEADERS+= ranlux.h
RND_HEADERS+= seed_seq.h
RND_HEADERS+= shuffle_order_engine.h
RND_HEADERS+= student_t_distribution.h
RND_HEADERS+= subtract_with_carry_engine.h
RND_HEADERS+= uniform_int_distribution.h
RND_HEADERS+= uniform_random_bit_generator.h
RND_HEADERS+= uniform_real_distribution.h
RND_HEADERS+= weibull_distribution.h
.for hdr in ${RND_HEADERS}
RND+= ${HDRDIR}/__random/${hdr}
.endfor
INCSGROUPS+= RNG
RNGDIR= ${CXXINCLUDEDIR}/__ranges
RNG_HEADERS+= access.h
RNG_HEADERS+= all.h
RNG_HEADERS+= as_rvalue_view.h
RNG_HEADERS+= common_view.h
RNG_HEADERS+= concepts.h
RNG_HEADERS+= copyable_box.h
RNG_HEADERS+= counted.h
RNG_HEADERS+= dangling.h
RNG_HEADERS+= data.h
RNG_HEADERS+= drop_view.h
RNG_HEADERS+= drop_while_view.h
RNG_HEADERS+= elements_view.h
RNG_HEADERS+= empty.h
RNG_HEADERS+= empty_view.h
RNG_HEADERS+= enable_borrowed_range.h
RNG_HEADERS+= enable_view.h
RNG_HEADERS+= filter_view.h
RNG_HEADERS+= iota_view.h
RNG_HEADERS+= istream_view.h
RNG_HEADERS+= join_view.h
RNG_HEADERS+= lazy_split_view.h
RNG_HEADERS+= non_propagating_cache.h
RNG_HEADERS+= owning_view.h
RNG_HEADERS+= range_adaptor.h
RNG_HEADERS+= rbegin.h
RNG_HEADERS+= ref_view.h
RNG_HEADERS+= rend.h
RNG_HEADERS+= reverse_view.h
RNG_HEADERS+= single_view.h
RNG_HEADERS+= size.h
RNG_HEADERS+= split_view.h
RNG_HEADERS+= subrange.h
RNG_HEADERS+= take_view.h
RNG_HEADERS+= take_while_view.h
RNG_HEADERS+= transform_view.h
RNG_HEADERS+= view_interface.h
RNG_HEADERS+= views.h
RNG_HEADERS+= zip_view.h
.for hdr in ${RNG_HEADERS}
RNG+= ${HDRDIR}/__ranges/${hdr}
.endfor
INCSGROUPS+= STR
STRDIR= ${CXXINCLUDEDIR}/__string
STR_HEADERS+= char_traits.h
STR_HEADERS+= extern_template_lists.h
.for hdr in ${STR_HEADERS}
STR+= ${HDRDIR}/__string/${hdr}
.endfor
INCSGROUPS+= THR
THRDIR= ${CXXINCLUDEDIR}/__thread
THR_HEADERS+= poll_with_backoff.h
THR_HEADERS+= timed_backoff_policy.h
.for hdr in ${THR_HEADERS}
THR+= ${HDRDIR}/__thread/${hdr}
.endfor
INCSGROUPS+= TUP
TUPDIR= ${CXXINCLUDEDIR}/__tuple_dir
TUP_HEADERS+= apply_cv.h
TUP_HEADERS+= make_tuple_types.h
TUP_HEADERS+= pair_like.h
TUP_HEADERS+= sfinae_helpers.h
TUP_HEADERS+= tuple_element.h
TUP_HEADERS+= tuple_indices.h
TUP_HEADERS+= tuple_like.h
TUP_HEADERS+= tuple_like_ext.h
TUP_HEADERS+= tuple_size.h
TUP_HEADERS+= tuple_types.h
.for hdr in ${TUP_HEADERS}
TUP+= ${HDRDIR}/__tuple_dir/${hdr}
.endfor
INCSGROUPS+= TTR
TTRDIR= ${CXXINCLUDEDIR}/__type_traits
TTR_HEADERS+= add_const.h
TTR_HEADERS+= add_cv.h
TTR_HEADERS+= add_lvalue_reference.h
TTR_HEADERS+= add_pointer.h
TTR_HEADERS+= add_rvalue_reference.h
TTR_HEADERS+= add_volatile.h
TTR_HEADERS+= aligned_storage.h
TTR_HEADERS+= aligned_union.h
TTR_HEADERS+= alignment_of.h
TTR_HEADERS+= apply_cv.h
TTR_HEADERS+= can_extract_key.h
TTR_HEADERS+= common_reference.h
TTR_HEADERS+= common_type.h
TTR_HEADERS+= conditional.h
TTR_HEADERS+= conjunction.h
TTR_HEADERS+= copy_cv.h
TTR_HEADERS+= copy_cvref.h
TTR_HEADERS+= decay.h
TTR_HEADERS+= dependent_type.h
TTR_HEADERS+= disjunction.h
TTR_HEADERS+= enable_if.h
TTR_HEADERS+= extent.h
TTR_HEADERS+= has_unique_object_representation.h
TTR_HEADERS+= has_virtual_destructor.h
TTR_HEADERS+= integral_constant.h
TTR_HEADERS+= is_abstract.h
TTR_HEADERS+= is_aggregate.h
TTR_HEADERS+= is_allocator.h
TTR_HEADERS+= is_always_bitcastable.h
TTR_HEADERS+= is_arithmetic.h
TTR_HEADERS+= is_array.h
TTR_HEADERS+= is_assignable.h
TTR_HEADERS+= is_base_of.h
TTR_HEADERS+= is_bounded_array.h
TTR_HEADERS+= is_callable.h
TTR_HEADERS+= is_char_like_type.h
TTR_HEADERS+= is_class.h
TTR_HEADERS+= is_compound.h
TTR_HEADERS+= is_const.h
TTR_HEADERS+= is_constant_evaluated.h
TTR_HEADERS+= is_constructible.h
TTR_HEADERS+= is_convertible.h
TTR_HEADERS+= is_copy_assignable.h
TTR_HEADERS+= is_copy_constructible.h
TTR_HEADERS+= is_core_convertible.h
TTR_HEADERS+= is_default_constructible.h
TTR_HEADERS+= is_destructible.h
TTR_HEADERS+= is_empty.h
TTR_HEADERS+= is_enum.h
TTR_HEADERS+= is_final.h
TTR_HEADERS+= is_floating_point.h
TTR_HEADERS+= is_function.h
TTR_HEADERS+= is_fundamental.h
TTR_HEADERS+= is_implicitly_default_constructible.h
TTR_HEADERS+= is_integral.h
TTR_HEADERS+= is_literal_type.h
TTR_HEADERS+= is_member_function_pointer.h
TTR_HEADERS+= is_member_object_pointer.h
TTR_HEADERS+= is_member_pointer.h
TTR_HEADERS+= is_move_assignable.h
TTR_HEADERS+= is_move_constructible.h
TTR_HEADERS+= is_nothrow_assignable.h
TTR_HEADERS+= is_nothrow_constructible.h
TTR_HEADERS+= is_nothrow_convertible.h
TTR_HEADERS+= is_nothrow_copy_assignable.h
TTR_HEADERS+= is_nothrow_copy_constructible.h
TTR_HEADERS+= is_nothrow_default_constructible.h
TTR_HEADERS+= is_nothrow_destructible.h
TTR_HEADERS+= is_nothrow_move_assignable.h
TTR_HEADERS+= is_nothrow_move_constructible.h
TTR_HEADERS+= is_null_pointer.h
TTR_HEADERS+= is_object.h
TTR_HEADERS+= is_pod.h
TTR_HEADERS+= is_pointer.h
TTR_HEADERS+= is_polymorphic.h
TTR_HEADERS+= is_primary_template.h
TTR_HEADERS+= is_reference.h
TTR_HEADERS+= is_reference_wrapper.h
TTR_HEADERS+= is_referenceable.h
TTR_HEADERS+= is_same.h
TTR_HEADERS+= is_scalar.h
TTR_HEADERS+= is_scoped_enum.h
TTR_HEADERS+= is_signed.h
TTR_HEADERS+= is_signed_integer.h
TTR_HEADERS+= is_specialization.h
TTR_HEADERS+= is_standard_layout.h
TTR_HEADERS+= is_swappable.h
TTR_HEADERS+= is_trivial.h
TTR_HEADERS+= is_trivially_assignable.h
TTR_HEADERS+= is_trivially_constructible.h
TTR_HEADERS+= is_trivially_copy_assignable.h
TTR_HEADERS+= is_trivially_copy_constructible.h
TTR_HEADERS+= is_trivially_copyable.h
TTR_HEADERS+= is_trivially_default_constructible.h
TTR_HEADERS+= is_trivially_destructible.h
TTR_HEADERS+= is_trivially_move_assignable.h
TTR_HEADERS+= is_trivially_move_constructible.h
TTR_HEADERS+= is_unbounded_array.h
TTR_HEADERS+= is_union.h
TTR_HEADERS+= is_unsigned.h
TTR_HEADERS+= is_unsigned_integer.h
TTR_HEADERS+= is_valid_expansion.h
TTR_HEADERS+= is_void.h
TTR_HEADERS+= is_volatile.h
TTR_HEADERS+= lazy.h
TTR_HEADERS+= make_32_64_or_128_bit.h
TTR_HEADERS+= make_const_lvalue_ref.h
TTR_HEADERS+= make_signed.h
TTR_HEADERS+= make_unsigned.h
TTR_HEADERS+= maybe_const.h
TTR_HEADERS+= nat.h
TTR_HEADERS+= negation.h
TTR_HEADERS+= noexcept_move_assign_container.h
TTR_HEADERS+= promote.h
TTR_HEADERS+= rank.h
TTR_HEADERS+= remove_all_extents.h
TTR_HEADERS+= remove_const.h
TTR_HEADERS+= remove_const_ref.h
TTR_HEADERS+= remove_cv.h
TTR_HEADERS+= remove_cvref.h
TTR_HEADERS+= remove_extent.h
TTR_HEADERS+= remove_pointer.h
TTR_HEADERS+= remove_reference.h
TTR_HEADERS+= remove_volatile.h
TTR_HEADERS+= result_of.h
TTR_HEADERS+= strip_signature.h
TTR_HEADERS+= type_identity.h
TTR_HEADERS+= type_list.h
TTR_HEADERS+= underlying_type.h
TTR_HEADERS+= void_t.h
.for hdr in ${TTR_HEADERS}
TTR+= ${HDRDIR}/__type_traits/${hdr}
.endfor
INCSGROUPS+= UTL
UTLDIR= ${CXXINCLUDEDIR}/__utility
UTL_HEADERS+= as_const.h
UTL_HEADERS+= auto_cast.h
UTL_HEADERS+= cmp.h
UTL_HEADERS+= convert_to_integral.h
UTL_HEADERS+= declval.h
UTL_HEADERS+= exception_guard.h
UTL_HEADERS+= exchange.h
UTL_HEADERS+= forward.h
UTL_HEADERS+= forward_like.h
UTL_HEADERS+= in_place.h
UTL_HEADERS+= integer_sequence.h
UTL_HEADERS+= move.h
UTL_HEADERS+= pair.h
UTL_HEADERS+= piecewise_construct.h
UTL_HEADERS+= priority_tag.h
UTL_HEADERS+= rel_ops.h
UTL_HEADERS+= swap.h
UTL_HEADERS+= to_underlying.h
UTL_HEADERS+= unreachable.h
.for hdr in ${UTL_HEADERS}
UTL+= ${HDRDIR}/__utility/${hdr}
.endfor
INCSGROUPS+= VAR
VARDIR= ${CXXINCLUDEDIR}/__variant
VAR_HEADERS+= monostate.h
.for hdr in ${VAR_HEADERS}
VAR+= ${HDRDIR}/__variant/${hdr}
.endfor
INCSGROUPS+= EXP
EXPDIR= ${CXXINCLUDEDIR}/experimental
EXP_HEADERS+= __config
EXP_HEADERS+= __memory
EXP_HEADERS+= algorithm
EXP_HEADERS+= coroutine
EXP_HEADERS+= deque
EXP_HEADERS+= forward_list
EXP_HEADERS+= functional
EXP_HEADERS+= iterator
EXP_HEADERS+= list
EXP_HEADERS+= map
EXP_HEADERS+= memory_resource
EXP_HEADERS+= propagate_const
EXP_HEADERS+= regex
EXP_HEADERS+= set
EXP_HEADERS+= simd
EXP_HEADERS+= string
EXP_HEADERS+= type_traits
EXP_HEADERS+= unordered_map
EXP_HEADERS+= unordered_set
EXP_HEADERS+= utility
EXP_HEADERS+= vector
.for hdr in ${EXP_HEADERS}
EXP+= ${HDRDIR}/experimental/${hdr}
.endfor
INCSGROUPS+= EXT
EXTDIR= ${CXXINCLUDEDIR}/ext
EXT_HEADERS+= __hash
EXT_HEADERS+= hash_map
EXT_HEADERS+= hash_set
.for hdr in ${EXT_HEADERS}
EXT+= ${HDRDIR}/ext/${hdr}
.endfor
.include <bsd.lib.mk>