# 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

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 KSCAN_SDL
	default y
	depends on KSCAN

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
