# This file was generated by the YaTool build system (https://github.com/yandex/yatool),
# from a source YaTool build configuration provided in ya.make files.
#
# If the repository supports both CMake and ya build configurations, please modify both of them.
#
# If only CMake build configuration is supported then modify only CMake files and note that only
# simple modifications are allowed like adding source-files to targets or adding simple properties
# like target_include_directories. These modifications will be ported to original ya.make files
# by maintainers. Any complex modifications which can't be easily ported back to the ya build
# system may be rejected.
#
# Please refer to the build instructions in the repository for more information about manual
# changes in this file.

add_subdirectory(charset)
add_subdirectory(draft)
add_subdirectory(ut)
add_subdirectory(datetime)
add_subdirectory(digest)
add_subdirectory(folder)
add_subdirectory(generic)
add_subdirectory(memory)
add_subdirectory(network)
add_subdirectory(random)
add_subdirectory(stream)
add_subdirectory(string)
add_subdirectory(system)
add_subdirectory(thread)

add_library(yutil)


target_compile_options(yutil PRIVATE
  -Wnarrowing
)

target_link_libraries(yutil PUBLIC
  contrib-libs-linux-headers
  contrib-libs-cxxsupp
  util-charset
  contrib-libs-zlib
  contrib-libs-double-conversion
  contrib-libs-libc_compat
)

target_sources(yutil PRIVATE
  ${PROJECT_SOURCE_DIR}/util/system/compiler.cpp
  ${PROJECT_SOURCE_DIR}/util/digest/city.cpp
  ${PROJECT_SOURCE_DIR}/util/random/random.cpp
  ${PROJECT_SOURCE_DIR}/util/string/cast.cpp
  ${PROJECT_SOURCE_DIR}/util/system/valgrind.cpp
  ${PROJECT_SOURCE_DIR}/util/system/mktemp_system.cpp
  ${PROJECT_SOURCE_DIR}/util/datetime/base.h
  ${PROJECT_SOURCE_DIR}/util/datetime/constants.h
  ${PROJECT_SOURCE_DIR}/util/datetime/cputimer.h
  ${PROJECT_SOURCE_DIR}/util/datetime/parser.h
  ${PROJECT_SOURCE_DIR}/util/datetime/process_uptime.h
  ${PROJECT_SOURCE_DIR}/util/datetime/systime.h
  ${PROJECT_SOURCE_DIR}/util/datetime/uptime.h
  ${PROJECT_SOURCE_DIR}/util/digest/city.h
  ${PROJECT_SOURCE_DIR}/util/digest/city_streaming.h
  ${PROJECT_SOURCE_DIR}/util/digest/fnv.h
  ${PROJECT_SOURCE_DIR}/util/digest/multi.h
  ${PROJECT_SOURCE_DIR}/util/digest/murmur.h
  ${PROJECT_SOURCE_DIR}/util/digest/numeric.h
  ${PROJECT_SOURCE_DIR}/util/digest/sequence.h
  ${PROJECT_SOURCE_DIR}/util/folder/dirent_win.h
  ${PROJECT_SOURCE_DIR}/util/folder/dirut.h
  ${PROJECT_SOURCE_DIR}/util/folder/filelist.h
  ${PROJECT_SOURCE_DIR}/util/folder/fts.h
  ${PROJECT_SOURCE_DIR}/util/folder/fwd.h
  ${PROJECT_SOURCE_DIR}/util/folder/iterator.h
  ${PROJECT_SOURCE_DIR}/util/folder/lstat_win.h
  ${PROJECT_SOURCE_DIR}/util/folder/path.h
  ${PROJECT_SOURCE_DIR}/util/folder/pathsplit.h
  ${PROJECT_SOURCE_DIR}/util/folder/tempdir.h
  ${PROJECT_SOURCE_DIR}/util/generic/adaptor.h
  ${PROJECT_SOURCE_DIR}/util/generic/algorithm.h
  ${PROJECT_SOURCE_DIR}/util/generic/array_ref.h
  ${PROJECT_SOURCE_DIR}/util/generic/array_size.h
  ${PROJECT_SOURCE_DIR}/util/generic/bitmap.h
  ${PROJECT_SOURCE_DIR}/util/generic/bitops.h
  ${PROJECT_SOURCE_DIR}/util/generic/buffer.h
  ${PROJECT_SOURCE_DIR}/util/generic/cast.h
  ${PROJECT_SOURCE_DIR}/util/generic/deque.h
  ${PROJECT_SOURCE_DIR}/util/generic/enum_cast.h
  ${PROJECT_SOURCE_DIR}/util/generic/explicit_type.h
  ${PROJECT_SOURCE_DIR}/util/generic/fastqueue.h
  ${PROJECT_SOURCE_DIR}/util/generic/flags.h
  ${PROJECT_SOURCE_DIR}/util/generic/function.h
  ${PROJECT_SOURCE_DIR}/util/generic/function_ref.h
  ${PROJECT_SOURCE_DIR}/util/generic/fwd.h
  ${PROJECT_SOURCE_DIR}/util/generic/guid.h
  ${PROJECT_SOURCE_DIR}/util/generic/hash.h
  ${PROJECT_SOURCE_DIR}/util/generic/hash_multi_map.h
  ${PROJECT_SOURCE_DIR}/util/generic/hash_primes.h
  ${PROJECT_SOURCE_DIR}/util/generic/hash_set.h
  ${PROJECT_SOURCE_DIR}/util/generic/hash_table.h
  ${PROJECT_SOURCE_DIR}/util/generic/hide_ptr.h
  ${PROJECT_SOURCE_DIR}/util/generic/intrlist.h
  ${PROJECT_SOURCE_DIR}/util/generic/is_in.h
  ${PROJECT_SOURCE_DIR}/util/generic/iterator.h
  ${PROJECT_SOURCE_DIR}/util/generic/iterator_range.h
  ${PROJECT_SOURCE_DIR}/util/generic/lazy_value.h
  ${PROJECT_SOURCE_DIR}/util/generic/list.h
  ${PROJECT_SOURCE_DIR}/util/generic/map.h
  ${PROJECT_SOURCE_DIR}/util/generic/mapfindptr.h
  ${PROJECT_SOURCE_DIR}/util/generic/maybe.h
  ${PROJECT_SOURCE_DIR}/util/generic/maybe_traits.h
  ${PROJECT_SOURCE_DIR}/util/generic/mem_copy.h
  ${PROJECT_SOURCE_DIR}/util/generic/noncopyable.h
  ${PROJECT_SOURCE_DIR}/util/generic/object_counter.h
  ${PROJECT_SOURCE_DIR}/util/generic/overloaded.h
  ${PROJECT_SOURCE_DIR}/util/generic/ptr.h
  ${PROJECT_SOURCE_DIR}/util/generic/queue.h
  ${PROJECT_SOURCE_DIR}/util/generic/refcount.h
  ${PROJECT_SOURCE_DIR}/util/generic/reserve.h
  ${PROJECT_SOURCE_DIR}/util/generic/scope.h
  ${PROJECT_SOURCE_DIR}/util/generic/serialized_enum.h
  ${PROJECT_SOURCE_DIR}/util/generic/set.h
  ${PROJECT_SOURCE_DIR}/util/generic/singleton.h
  ${PROJECT_SOURCE_DIR}/util/generic/size_literals.h
  ${PROJECT_SOURCE_DIR}/util/generic/stack.h
  ${PROJECT_SOURCE_DIR}/util/generic/store_policy.h
  ${PROJECT_SOURCE_DIR}/util/generic/strbase.h
  ${PROJECT_SOURCE_DIR}/util/generic/strbuf.h
  ${PROJECT_SOURCE_DIR}/util/generic/strfcpy.h
  ${PROJECT_SOURCE_DIR}/util/generic/string.h
  ${PROJECT_SOURCE_DIR}/util/generic/string_hash.h
  ${PROJECT_SOURCE_DIR}/util/generic/typelist.h
  ${PROJECT_SOURCE_DIR}/util/generic/typetraits.h
  ${PROJECT_SOURCE_DIR}/util/generic/utility.h
  ${PROJECT_SOURCE_DIR}/util/generic/va_args.h
  ${PROJECT_SOURCE_DIR}/util/generic/variant.h
  ${PROJECT_SOURCE_DIR}/util/generic/vector.h
  ${PROJECT_SOURCE_DIR}/util/generic/xrange.h
  ${PROJECT_SOURCE_DIR}/util/generic/yexception.h
  ${PROJECT_SOURCE_DIR}/util/generic/ylimits.h
  ${PROJECT_SOURCE_DIR}/util/generic/ymath.h
  ${PROJECT_SOURCE_DIR}/util/memory/addstorage.h
  ${PROJECT_SOURCE_DIR}/util/memory/alloc.h
  ${PROJECT_SOURCE_DIR}/util/memory/blob.h
  ${PROJECT_SOURCE_DIR}/util/memory/mmapalloc.h
  ${PROJECT_SOURCE_DIR}/util/memory/pool.h
  ${PROJECT_SOURCE_DIR}/util/memory/segmented_string_pool.h
  ${PROJECT_SOURCE_DIR}/util/memory/segpool_alloc.h
  ${PROJECT_SOURCE_DIR}/util/memory/smallobj.h
  ${PROJECT_SOURCE_DIR}/util/memory/tempbuf.h
  ${PROJECT_SOURCE_DIR}/util/network/address.h
  ${PROJECT_SOURCE_DIR}/util/network/endpoint.h
  ${PROJECT_SOURCE_DIR}/util/network/hostip.h
  ${PROJECT_SOURCE_DIR}/util/network/init.h
  ${PROJECT_SOURCE_DIR}/util/network/interface.h
  ${PROJECT_SOURCE_DIR}/util/network/iovec.h
  ${PROJECT_SOURCE_DIR}/util/network/ip.h
  ${PROJECT_SOURCE_DIR}/util/network/nonblock.h
  ${PROJECT_SOURCE_DIR}/util/network/pair.h
  ${PROJECT_SOURCE_DIR}/util/network/poller.h
  ${PROJECT_SOURCE_DIR}/util/network/pollerimpl.h
  ${PROJECT_SOURCE_DIR}/util/network/sock.h
  ${PROJECT_SOURCE_DIR}/util/network/socket.h
  ${PROJECT_SOURCE_DIR}/util/random/common_ops.h
  ${PROJECT_SOURCE_DIR}/util/random/easy.h
  ${PROJECT_SOURCE_DIR}/util/random/entropy.h
  ${PROJECT_SOURCE_DIR}/util/random/fast.h
  ${PROJECT_SOURCE_DIR}/util/random/init_atfork.h
  ${PROJECT_SOURCE_DIR}/util/random/lcg_engine.h
  ${PROJECT_SOURCE_DIR}/util/random/mersenne.h
  ${PROJECT_SOURCE_DIR}/util/random/mersenne32.h
  ${PROJECT_SOURCE_DIR}/util/random/mersenne64.h
  ${PROJECT_SOURCE_DIR}/util/random/normal.h
  ${PROJECT_SOURCE_DIR}/util/random/random.h
  ${PROJECT_SOURCE_DIR}/util/random/shuffle.h
  ${PROJECT_SOURCE_DIR}/util/stream/aligned.h
  ${PROJECT_SOURCE_DIR}/util/stream/buffer.h
  ${PROJECT_SOURCE_DIR}/util/stream/buffered.h
  ${PROJECT_SOURCE_DIR}/util/stream/direct_io.h
  ${PROJECT_SOURCE_DIR}/util/stream/file.h
  ${PROJECT_SOURCE_DIR}/util/stream/format.h
  ${PROJECT_SOURCE_DIR}/util/stream/fwd.h
  ${PROJECT_SOURCE_DIR}/util/stream/hex.h
  ${PROJECT_SOURCE_DIR}/util/stream/holder.h
  ${PROJECT_SOURCE_DIR}/util/stream/input.h
  ${PROJECT_SOURCE_DIR}/util/stream/labeled.h
  ${PROJECT_SOURCE_DIR}/util/stream/length.h
  ${PROJECT_SOURCE_DIR}/util/stream/mem.h
  ${PROJECT_SOURCE_DIR}/util/stream/multi.h
  ${PROJECT_SOURCE_DIR}/util/stream/null.h
  ${PROJECT_SOURCE_DIR}/util/stream/output.h
  ${PROJECT_SOURCE_DIR}/util/stream/pipe.h
  ${PROJECT_SOURCE_DIR}/util/stream/printf.h
  ${PROJECT_SOURCE_DIR}/util/stream/str.h
  ${PROJECT_SOURCE_DIR}/util/stream/tee.h
  ${PROJECT_SOURCE_DIR}/util/stream/tempbuf.h
  ${PROJECT_SOURCE_DIR}/util/stream/tokenizer.h
  ${PROJECT_SOURCE_DIR}/util/stream/trace.h
  ${PROJECT_SOURCE_DIR}/util/stream/walk.h
  ${PROJECT_SOURCE_DIR}/util/stream/zerocopy.h
  ${PROJECT_SOURCE_DIR}/util/stream/zerocopy_output.h
  ${PROJECT_SOURCE_DIR}/util/stream/zlib.h
  ${PROJECT_SOURCE_DIR}/util/string/ascii.h
  ${PROJECT_SOURCE_DIR}/util/string/builder.h
  ${PROJECT_SOURCE_DIR}/util/string/cast.h
  ${PROJECT_SOURCE_DIR}/util/string/cstriter.h
  ${PROJECT_SOURCE_DIR}/util/string/escape.h
  ${PROJECT_SOURCE_DIR}/util/string/hex.h
  ${PROJECT_SOURCE_DIR}/util/string/join.h
  ${PROJECT_SOURCE_DIR}/util/string/printf.h
  ${PROJECT_SOURCE_DIR}/util/string/reverse.h
  ${PROJECT_SOURCE_DIR}/util/string/split.h
  ${PROJECT_SOURCE_DIR}/util/string/strip.h
  ${PROJECT_SOURCE_DIR}/util/string/strspn.h
  ${PROJECT_SOURCE_DIR}/util/string/subst.h
  ${PROJECT_SOURCE_DIR}/util/string/type.h
  ${PROJECT_SOURCE_DIR}/util/string/util.h
  ${PROJECT_SOURCE_DIR}/util/string/vector.h
  ${PROJECT_SOURCE_DIR}/util/system/align.h
  ${PROJECT_SOURCE_DIR}/util/system/atexit.h
  ${PROJECT_SOURCE_DIR}/util/system/backtrace.h
  ${PROJECT_SOURCE_DIR}/util/system/byteorder.h
  ${PROJECT_SOURCE_DIR}/util/system/compat.h
  ${PROJECT_SOURCE_DIR}/util/system/compiler.h
  ${PROJECT_SOURCE_DIR}/util/system/condvar.h
  ${PROJECT_SOURCE_DIR}/util/system/context.h
  ${PROJECT_SOURCE_DIR}/util/system/context_aarch64.h
  ${PROJECT_SOURCE_DIR}/util/system/context_i686.h
  ${PROJECT_SOURCE_DIR}/util/system/context_x86.h
  ${PROJECT_SOURCE_DIR}/util/system/context_x86_64.h
  ${PROJECT_SOURCE_DIR}/util/system/cpu_id.h
  ${PROJECT_SOURCE_DIR}/util/system/daemon.h
  ${PROJECT_SOURCE_DIR}/util/system/datetime.h
  ${PROJECT_SOURCE_DIR}/util/system/defaults.h
  ${PROJECT_SOURCE_DIR}/util/system/demangle_impl.h
  ${PROJECT_SOURCE_DIR}/util/system/direct_io.h
  ${PROJECT_SOURCE_DIR}/util/system/dynlib.h
  ${PROJECT_SOURCE_DIR}/util/system/env.h
  ${PROJECT_SOURCE_DIR}/util/system/error.h
  ${PROJECT_SOURCE_DIR}/util/system/event.h
  ${PROJECT_SOURCE_DIR}/util/system/execpath.h
  ${PROJECT_SOURCE_DIR}/util/system/fasttime.h
  ${PROJECT_SOURCE_DIR}/util/system/fhandle.h
  ${PROJECT_SOURCE_DIR}/util/system/file.h
  ${PROJECT_SOURCE_DIR}/util/system/file_lock.h
  ${PROJECT_SOURCE_DIR}/util/system/filemap.h
  ${PROJECT_SOURCE_DIR}/util/system/flock.h
  ${PROJECT_SOURCE_DIR}/util/system/fs.h
  ${PROJECT_SOURCE_DIR}/util/system/fs_win.h
  ${PROJECT_SOURCE_DIR}/util/system/fstat.h
  ${PROJECT_SOURCE_DIR}/util/system/getpid.h
  ${PROJECT_SOURCE_DIR}/util/system/guard.h
  ${PROJECT_SOURCE_DIR}/util/system/hi_lo.h
  ${PROJECT_SOURCE_DIR}/util/system/hostname.h
  ${PROJECT_SOURCE_DIR}/util/system/hp_timer.h
  ${PROJECT_SOURCE_DIR}/util/system/info.h
  ${PROJECT_SOURCE_DIR}/util/system/interrupt_signals.h
  ${PROJECT_SOURCE_DIR}/util/system/madvise.h
  ${PROJECT_SOURCE_DIR}/util/system/maxlen.h
  ${PROJECT_SOURCE_DIR}/util/system/mem_info.h
  ${PROJECT_SOURCE_DIR}/util/system/mincore.h
  ${PROJECT_SOURCE_DIR}/util/system/mlock.h
  ${PROJECT_SOURCE_DIR}/util/system/mutex.h
  ${PROJECT_SOURCE_DIR}/util/system/nice.h
  ${PROJECT_SOURCE_DIR}/util/system/pipe.h
  ${PROJECT_SOURCE_DIR}/util/system/platform.h
  ${PROJECT_SOURCE_DIR}/util/system/progname.h
  ${PROJECT_SOURCE_DIR}/util/system/protect.h
  ${PROJECT_SOURCE_DIR}/util/system/rusage.h
  ${PROJECT_SOURCE_DIR}/util/system/rwlock.h
  ${PROJECT_SOURCE_DIR}/util/system/sanitizers.h
  ${PROJECT_SOURCE_DIR}/util/system/sem.h
  ${PROJECT_SOURCE_DIR}/util/system/shellcommand.h
  ${PROJECT_SOURCE_DIR}/util/system/shmat.h
  ${PROJECT_SOURCE_DIR}/util/system/sigset.h
  ${PROJECT_SOURCE_DIR}/util/system/spin_wait.h
  ${PROJECT_SOURCE_DIR}/util/system/spinlock.h
  ${PROJECT_SOURCE_DIR}/util/system/src_location.h
  ${PROJECT_SOURCE_DIR}/util/system/src_root.h
  ${PROJECT_SOURCE_DIR}/util/system/sys_alloc.h
  ${PROJECT_SOURCE_DIR}/util/system/sysstat.h
  ${PROJECT_SOURCE_DIR}/util/system/tempfile.h
  ${PROJECT_SOURCE_DIR}/util/system/thread.h
  ${PROJECT_SOURCE_DIR}/util/system/tls.h
  ${PROJECT_SOURCE_DIR}/util/system/type_name.h
  ${PROJECT_SOURCE_DIR}/util/system/types.h
  ${PROJECT_SOURCE_DIR}/util/system/unaligned_mem.h
  ${PROJECT_SOURCE_DIR}/util/system/user.h
  ${PROJECT_SOURCE_DIR}/util/system/utime.h
  ${PROJECT_SOURCE_DIR}/util/system/valgrind.h
  ${PROJECT_SOURCE_DIR}/util/system/win_undef.h
  ${PROJECT_SOURCE_DIR}/util/system/winint.h
  ${PROJECT_SOURCE_DIR}/util/system/yassert.h
  ${PROJECT_SOURCE_DIR}/util/system/yield.h
  ${PROJECT_SOURCE_DIR}/util/thread/factory.h
  ${PROJECT_SOURCE_DIR}/util/thread/fwd.h
  ${PROJECT_SOURCE_DIR}/util/thread/lfqueue.h
  ${PROJECT_SOURCE_DIR}/util/thread/lfstack.h
  ${PROJECT_SOURCE_DIR}/util/thread/pool.h
  ${PROJECT_SOURCE_DIR}/util/thread/singleton.h
)


target_joined_source(yutil
  all_datetime.cpp
  ${PROJECT_SOURCE_DIR}/util/datetime/base.cpp
  ${PROJECT_SOURCE_DIR}/util/datetime/constants.cpp
  ${PROJECT_SOURCE_DIR}/util/datetime/cputimer.cpp
  ${PROJECT_SOURCE_DIR}/util/datetime/process_uptime.cpp
  ${PROJECT_SOURCE_DIR}/util/datetime/systime.cpp
  ${PROJECT_SOURCE_DIR}/util/datetime/uptime.cpp
)

target_joined_source(yutil
  all_digest.cpp
  ${PROJECT_SOURCE_DIR}/util/digest/fnv.cpp
  ${PROJECT_SOURCE_DIR}/util/digest/multi.cpp
  ${PROJECT_SOURCE_DIR}/util/digest/murmur.cpp
  ${PROJECT_SOURCE_DIR}/util/digest/numeric.cpp
  ${PROJECT_SOURCE_DIR}/util/digest/sequence.cpp
)

target_joined_source(yutil
  all_util.cpp
  ${PROJECT_SOURCE_DIR}/util/ysafeptr.cpp
  ${PROJECT_SOURCE_DIR}/util/ysaveload.cpp
  ${PROJECT_SOURCE_DIR}/util/str_stl.cpp
)

target_joined_source(yutil
  all_folder.cpp
  ${PROJECT_SOURCE_DIR}/util/folder/dirut.cpp
  ${PROJECT_SOURCE_DIR}/util/folder/filelist.cpp
  ${PROJECT_SOURCE_DIR}/util/folder/fts.cpp
  ${PROJECT_SOURCE_DIR}/util/folder/fwd.cpp
  ${PROJECT_SOURCE_DIR}/util/folder/iterator.cpp
  ${PROJECT_SOURCE_DIR}/util/folder/path.cpp
  ${PROJECT_SOURCE_DIR}/util/folder/pathsplit.cpp
  ${PROJECT_SOURCE_DIR}/util/folder/tempdir.cpp
)

target_joined_source(yutil
  all_generic.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/adaptor.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/algorithm.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/array_ref.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/array_size.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/bitmap.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/bitops.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/buffer.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/cast.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/deque.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/enum_cast.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/explicit_type.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/fastqueue.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/flags.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/function.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/function_ref.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/fwd.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/guid.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/hash.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/hash_multi_map.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/hash_table.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/hash_primes.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/hash_set.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/hide_ptr.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/intrlist.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/is_in.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/iterator.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/iterator_range.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/lazy_value.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/list.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/map.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/mapfindptr.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/maybe.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/mem_copy.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/noncopyable.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/object_counter.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/overloaded.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/ptr.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/queue.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/refcount.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/scope.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/serialized_enum.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/set.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/singleton.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/size_literals.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/stack.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/store_policy.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/strbuf.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/strfcpy.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/string.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/typelist.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/typetraits.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/utility.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/va_args.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/variant.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/vector.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/xrange.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/yexception.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/ylimits.cpp
  ${PROJECT_SOURCE_DIR}/util/generic/ymath.cpp
)

target_joined_source(yutil
  all_memory.cpp
  ${PROJECT_SOURCE_DIR}/util/memory/addstorage.cpp
  ${PROJECT_SOURCE_DIR}/util/memory/alloc.cpp
  ${PROJECT_SOURCE_DIR}/util/memory/blob.cpp
  ${PROJECT_SOURCE_DIR}/util/memory/mmapalloc.cpp
  ${PROJECT_SOURCE_DIR}/util/memory/pool.cpp
  ${PROJECT_SOURCE_DIR}/util/memory/segmented_string_pool.cpp
  ${PROJECT_SOURCE_DIR}/util/memory/segpool_alloc.cpp
  ${PROJECT_SOURCE_DIR}/util/memory/smallobj.cpp
  ${PROJECT_SOURCE_DIR}/util/memory/tempbuf.cpp
)

target_joined_source(yutil
  all_network.cpp
  ${PROJECT_SOURCE_DIR}/util/network/address.cpp
  ${PROJECT_SOURCE_DIR}/util/network/endpoint.cpp
  ${PROJECT_SOURCE_DIR}/util/network/hostip.cpp
  ${PROJECT_SOURCE_DIR}/util/network/init.cpp
  ${PROJECT_SOURCE_DIR}/util/network/interface.cpp
  ${PROJECT_SOURCE_DIR}/util/network/iovec.cpp
  ${PROJECT_SOURCE_DIR}/util/network/ip.cpp
  ${PROJECT_SOURCE_DIR}/util/network/nonblock.cpp
  ${PROJECT_SOURCE_DIR}/util/network/pair.cpp
  ${PROJECT_SOURCE_DIR}/util/network/poller.cpp
  ${PROJECT_SOURCE_DIR}/util/network/pollerimpl.cpp
  ${PROJECT_SOURCE_DIR}/util/network/sock.cpp
  ${PROJECT_SOURCE_DIR}/util/network/socket.cpp
)

target_joined_source(yutil
  all_random.cpp
  ${PROJECT_SOURCE_DIR}/util/random/common_ops.cpp
  ${PROJECT_SOURCE_DIR}/util/random/easy.cpp
  ${PROJECT_SOURCE_DIR}/util/random/entropy.cpp
  ${PROJECT_SOURCE_DIR}/util/random/fast.cpp
  ${PROJECT_SOURCE_DIR}/util/random/lcg_engine.cpp
  ${PROJECT_SOURCE_DIR}/util/random/mersenne32.cpp
  ${PROJECT_SOURCE_DIR}/util/random/mersenne64.cpp
  ${PROJECT_SOURCE_DIR}/util/random/mersenne.cpp
  ${PROJECT_SOURCE_DIR}/util/random/normal.cpp
  ${PROJECT_SOURCE_DIR}/util/random/shuffle.cpp
  ${PROJECT_SOURCE_DIR}/util/random/init_atfork.cpp
)

target_joined_source(yutil
  all_stream.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/aligned.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/buffer.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/buffered.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/direct_io.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/file.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/format.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/fwd.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/hex.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/holder.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/input.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/labeled.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/length.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/mem.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/multi.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/null.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/output.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/pipe.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/printf.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/str.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/tee.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/tempbuf.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/tokenizer.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/trace.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/walk.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/zerocopy.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/zerocopy_output.cpp
  ${PROJECT_SOURCE_DIR}/util/stream/zlib.cpp
)

target_joined_source(yutil
  all_string.cpp
  ${PROJECT_SOURCE_DIR}/util/string/ascii.cpp
  ${PROJECT_SOURCE_DIR}/util/string/builder.cpp
  ${PROJECT_SOURCE_DIR}/util/string/cstriter.cpp
  ${PROJECT_SOURCE_DIR}/util/string/escape.cpp
  ${PROJECT_SOURCE_DIR}/util/string/hex.cpp
  ${PROJECT_SOURCE_DIR}/util/string/join.cpp
  ${PROJECT_SOURCE_DIR}/util/string/printf.cpp
  ${PROJECT_SOURCE_DIR}/util/string/reverse.cpp
  ${PROJECT_SOURCE_DIR}/util/string/split.cpp
  ${PROJECT_SOURCE_DIR}/util/string/strip.cpp
  ${PROJECT_SOURCE_DIR}/util/string/strspn.cpp
  ${PROJECT_SOURCE_DIR}/util/string/subst.cpp
  ${PROJECT_SOURCE_DIR}/util/string/type.cpp
  ${PROJECT_SOURCE_DIR}/util/string/util.cpp
  ${PROJECT_SOURCE_DIR}/util/string/vector.cpp
)

target_joined_source(yutil
  all_system_1.cpp
  ${PROJECT_SOURCE_DIR}/util/system/atexit.cpp
  ${PROJECT_SOURCE_DIR}/util/system/backtrace.cpp
  ${PROJECT_SOURCE_DIR}/util/system/compat.cpp
  ${PROJECT_SOURCE_DIR}/util/system/condvar.cpp
  ${PROJECT_SOURCE_DIR}/util/system/daemon.cpp
  ${PROJECT_SOURCE_DIR}/util/system/datetime.cpp
  ${PROJECT_SOURCE_DIR}/util/system/direct_io.cpp
  ${PROJECT_SOURCE_DIR}/util/system/dynlib.cpp
  ${PROJECT_SOURCE_DIR}/util/system/env.cpp
  ${PROJECT_SOURCE_DIR}/util/system/error.cpp
  ${PROJECT_SOURCE_DIR}/util/system/event.cpp
  ${PROJECT_SOURCE_DIR}/util/system/fasttime.cpp
  ${PROJECT_SOURCE_DIR}/util/system/file.cpp
  ${PROJECT_SOURCE_DIR}/util/system/file_lock.cpp
  ${PROJECT_SOURCE_DIR}/util/system/filemap.cpp
  ${PROJECT_SOURCE_DIR}/util/system/flock.cpp
  ${PROJECT_SOURCE_DIR}/util/system/fs.cpp
  ${PROJECT_SOURCE_DIR}/util/system/fstat.cpp
  ${PROJECT_SOURCE_DIR}/util/system/getpid.cpp
  ${PROJECT_SOURCE_DIR}/util/system/hi_lo.cpp
  ${PROJECT_SOURCE_DIR}/util/system/hostname.cpp
  ${PROJECT_SOURCE_DIR}/util/system/hp_timer.cpp
  ${PROJECT_SOURCE_DIR}/util/system/info.cpp
)

target_joined_source(yutil
  all_system_2.cpp
  ${PROJECT_SOURCE_DIR}/util/system/context.cpp
  ${PROJECT_SOURCE_DIR}/util/system/execpath.cpp
)

target_joined_source(yutil
  all_system_3.cpp
  ${PROJECT_SOURCE_DIR}/util/system/align.cpp
  ${PROJECT_SOURCE_DIR}/util/system/byteorder.cpp
  ${PROJECT_SOURCE_DIR}/util/system/cpu_id.cpp
  ${PROJECT_SOURCE_DIR}/util/system/fhandle.cpp
  ${PROJECT_SOURCE_DIR}/util/system/guard.cpp
  ${PROJECT_SOURCE_DIR}/util/system/interrupt_signals.cpp
  ${PROJECT_SOURCE_DIR}/util/system/madvise.cpp
  ${PROJECT_SOURCE_DIR}/util/system/maxlen.cpp
  ${PROJECT_SOURCE_DIR}/util/system/mincore.cpp
  ${PROJECT_SOURCE_DIR}/util/system/mktemp.cpp
  ${PROJECT_SOURCE_DIR}/util/system/mlock.cpp
  ${PROJECT_SOURCE_DIR}/util/system/mutex.cpp
  ${PROJECT_SOURCE_DIR}/util/system/nice.cpp
  ${PROJECT_SOURCE_DIR}/util/system/pipe.cpp
  ${PROJECT_SOURCE_DIR}/util/system/platform.cpp
  ${PROJECT_SOURCE_DIR}/util/system/progname.cpp
  ${PROJECT_SOURCE_DIR}/util/system/protect.cpp
  ${PROJECT_SOURCE_DIR}/util/system/rusage.cpp
  ${PROJECT_SOURCE_DIR}/util/system/rwlock.cpp
  ${PROJECT_SOURCE_DIR}/util/system/sanitizers.cpp
  ${PROJECT_SOURCE_DIR}/util/system/shellcommand.cpp
  ${PROJECT_SOURCE_DIR}/util/system/shmat.cpp
  ${PROJECT_SOURCE_DIR}/util/system/sigset.cpp
  ${PROJECT_SOURCE_DIR}/util/system/spinlock.cpp
  ${PROJECT_SOURCE_DIR}/util/system/spin_wait.cpp
  ${PROJECT_SOURCE_DIR}/util/system/src_location.cpp
  ${PROJECT_SOURCE_DIR}/util/system/sys_alloc.cpp
  ${PROJECT_SOURCE_DIR}/util/system/sysstat.cpp
  ${PROJECT_SOURCE_DIR}/util/system/tempfile.cpp
  ${PROJECT_SOURCE_DIR}/util/system/thread.cpp
  ${PROJECT_SOURCE_DIR}/util/system/tls.cpp
  ${PROJECT_SOURCE_DIR}/util/system/type_name.cpp
  ${PROJECT_SOURCE_DIR}/util/system/unaligned_mem.cpp
  ${PROJECT_SOURCE_DIR}/util/system/user.cpp
  ${PROJECT_SOURCE_DIR}/util/system/utime.cpp
  ${PROJECT_SOURCE_DIR}/util/system/yassert.cpp
  ${PROJECT_SOURCE_DIR}/util/system/yield.cpp
)

target_joined_source(yutil
  all_system_4.cpp
  ${PROJECT_SOURCE_DIR}/util/system/mem_info.cpp
  ${PROJECT_SOURCE_DIR}/util/system/sem.cpp
  ${PROJECT_SOURCE_DIR}/util/system/types.cpp
)

target_joined_source(yutil
  all_thread.cpp
  ${PROJECT_SOURCE_DIR}/util/thread/factory.cpp
  ${PROJECT_SOURCE_DIR}/util/thread/fwd.cpp
  ${PROJECT_SOURCE_DIR}/util/thread/lfqueue.cpp
  ${PROJECT_SOURCE_DIR}/util/thread/lfstack.cpp
  ${PROJECT_SOURCE_DIR}/util/thread/pool.cpp
  ${PROJECT_SOURCE_DIR}/util/thread/singleton.cpp
)

target_ragel_lexers(yutil
  PRIVATE
  ${PROJECT_SOURCE_DIR}/util/datetime/parser.rl6
  -CG2
)
