//===----------------------------------------------------------------------===//
//
// Custom __config_site for HIPRTC - freestanding environment
//
// This file is embedded in comgr and used when compiling HIPRTC programs
// with the embedded libc++ headers.
//
// Defines mirror libcxx/include/__config_site.in — update if upstream changes.
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP___CONFIG_SITE
#define _LIBCPP___CONFIG_SITE

// ABI configuration
#define _LIBCPP_ABI_VERSION 1
#define _LIBCPP_ABI_NAMESPACE __1
#define _LIBCPP_ABI_FORCE_ITANIUM 1
#define _LIBCPP_ABI_FORCE_MICROSOFT 0

// Disable features not available on GPU
#define _LIBCPP_HAS_THREADS 0
#define _LIBCPP_HAS_MONOTONIC_CLOCK 0
#define _LIBCPP_HAS_TERMINAL 0
#define _LIBCPP_HAS_MUSL_LIBC 0
#define _LIBCPP_HAS_THREAD_API_PTHREAD 0
#define _LIBCPP_HAS_THREAD_API_EXTERNAL 0
#define _LIBCPP_HAS_THREAD_API_WIN32 0
#define _LIBCPP_HAS_VENDOR_AVAILABILITY_ANNOTATIONS 0
#define _LIBCPP_HAS_FILESYSTEM 0
#define _LIBCPP_HAS_RANDOM_DEVICE 0
#define _LIBCPP_HAS_LOCALIZATION 0
#define _LIBCPP_HAS_UNICODE 0
#define _LIBCPP_HAS_WIDE_CHARACTERS 0
#define _LIBCPP_HAS_TIME_ZONE_DATABASE 0
#define _LIBCPP_INSTRUMENTED_WITH_ASAN 0

// C libraries - freestanding
#define _LIBCPP_LIBC_PICOLIBC 0
#define _LIBCPP_LIBC_NEWLIB 0
#define _LIBCPP_LIBC_LLVM_LIBC 0

// Hardening - disabled for GPU (minimal overhead)
// Values from libcxx/include/__configuration/hardening.h:
//   _LIBCPP_HARDENING_MODE_NONE      = (1 << 1)
//   _LIBCPP_ASSERTION_SEMANTIC_IGNORE = (1 << 2)
#define _LIBCPP_HARDENING_MODE_DEFAULT (1 << 1)
#define _LIBCPP_ASSERTION_SEMANTIC_DEFAULT (1 << 2)

// Remove transitive includes to avoid pulling in exception/iostream headers
// that are not available in GPU freestanding environment
#define _LIBCPP_REMOVE_TRANSITIVE_INCLUDES

#endif // _LIBCPP___CONFIG_SITE
