# SPDX-License-Identifier: Apache-2.0

if BOARD_NATIVE_POSIX

config BUILD_OUTPUT_BIN
	default n

config BUILD_OUTPUT_EXE
	default y

config OUTPUT_PRINT_MEMORY_USAGE
	default n

config BOARD
	default "native_posix_64" if BOARD_NATIVE_POSIX_64BIT
	default "native_posix"

if NETWORKING

config NET_L2_ETHERNET
	default y if !NET_LOOPBACK && !NET_TEST

config ETH_NATIVE_POSIX
	default y if NET_L2_ETHERNET

endif # NETWORKING

config FAKE_ENTROPY_NATIVE_POSIX
	default y
	depends on ENTROPY_GENERATOR

choice BT_HCI_BUS_TYPE
	default BT_USERCHAN
	depends on BT_HCI
endchoice

config UART_NATIVE_POSIX
	default y
	depends on SERIAL

if LOG

config LOG_BACKEND_NATIVE_POSIX
	default y if !SERIAL

# For native_posix we can log immediately without any problem
# Doing so will be nicer for debugging
config LOG_IMMEDIATE
	default y

# If we set LOG_IMMEDIATE, there is no need to have the logging thread
# running
config LOG_PROCESS_THREAD
	default n

endif # LOG

if CONSOLE

config NATIVE_POSIX_CONSOLE
	default y if !SERIAL

config UART_CONSOLE
	default y if SERIAL

endif # CONSOLE

config SDL_DISPLAY
	default y
	depends on DISPLAY

config FLASH_SIMULATOR
	default y
	depends on FLASH

config USB_NATIVE_POSIX
	default y
	depends on USB

config EEPROM_SIMULATOR
	default y
	depends on EEPROM

endif # BOARD_NATIVE_POSIX
