# 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

# For native_posix we can log synchronously without any problem
# Doing so will be nicer for debugging
choice LOG_MODE
	default LOG_MODE_IMMEDIATE
endchoice

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_DEVICE_DRIVER

config EEPROM_SIMULATOR
	default y
	depends on EEPROM

if I2C

config EMUL
	default y

config I2C_EMUL
	default y

endif # I2C

endif # BOARD_NATIVE_POSIX
