#### Configuration file emitting BUILD_BOCHS/GEM5/... defines ####
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/VariantConfig.hpp.in
               ${CMAKE_CURRENT_BINARY_DIR}/VariantConfig.hpp)

OPTION(CONFIG_EVENT_BREAKPOINTS         "Event source: Breakpoints" ON)
OPTION(CONFIG_EVENT_BREAKPOINTS_RANGE   "Event source: Range Breakpoints" ON)
OPTION(CONFIG_EVENT_MEMREAD             "Event source: Memory reads" ON)
OPTION(CONFIG_EVENT_MEMWRITE            "Event source: Memory writes" ON)
OPTION(CONFIG_EVENT_GUESTSYS            "Event source: Outbound guest-system communication" ON)
OPTION(CONFIG_EVENT_IOPORT              "Event source: I/O port communication" ON)
OPTION(CONFIG_EVENT_INTERRUPT           "Event source: Interrupts" ON)
OPTION(CONFIG_EVENT_TRAP                "Event source: Traps" ON)
OPTION(CONFIG_EVENT_JUMP                "Event source: Branch instructions" OFF)
OPTION(CONFIG_SR_RESTORE                "Target backend: State restore" ON)
OPTION(CONFIG_SR_SAVE                   "Target backend: State saving" ON)
OPTION(CONFIG_SR_REBOOT                 "Target backend: Reboot" ON)
OPTION(CONFIG_BOCHS_NON_VERBOSE         "Misc: Reduced verbosity (a lot faster for large campaigns)" OFF)
OPTION(CONFIG_BOCHS_NO_ABORT            "Misc: Do not abort or ask the user in case the simulator stumbles on unexpected events (e.g., panics)" ON)
OPTION(CONFIG_BOCHS_COMPRESS_STATE      "Misc: Reduce Bochs save/restore size by compressing memory images" ON)
OPTION(CONFIG_SUPPRESS_INTERRUPTS       "Target backend: Suppress interrupts" ON)
OPTION(CONFIG_FIRE_INTERRUPTS           "Target backend: Fire interrupts" ON)
OPTION(CONFIG_DISABLE_KEYB_INTERRUPTS   "Target backend: Suppress keyboard interrupts" OFF)
OPTION(SERVER_PERFORMANCE_MEASURE       "Performance measurement in job-server" OFF)
OPTION(CONFIG_FAST_BREAKPOINTS          "Enable fast breakpoints (only effective with breakpoints enabled; keep this ON unless you have a good reason not to)" ON)
OPTION(CONFIG_FAST_WATCHPOINTS          "Enable fast watchpoints (only effective with memory events enabled; keep this ON unless you have a good reason not to)" ON)
OPTION(CONFIG_INJECTIONPOINT_HOPS       "Enable hop chain trace navigation to injection point" OFF)
SET(SERVER_COMM_HOSTNAME        "localhost"  CACHE STRING "Job-server hostname or IP")
SET(SERVER_COMM_TCP_PORT        "1111"       CACHE STRING "Job-server TCP port")
SET(SERVER_OUT_QUEUE_SIZE       "0"          CACHE STRING "Queue size for outbound jobs (0 = unlimited)")
SET(SERVER_PERF_LOG_PATH        "perf.log"   CACHE STRING "A file name for storing the server's performance log (CSV)")
SET(SERVER_PERF_STEPPING_SEC    "1"          CACHE STRING "Stepping of performance measurements in seconds")
SET(CLIENT_RAND_BACKOFF_TSTART  "3"          CACHE STRING "Lower limit of client's backoff phase in seconds")
SET(CLIENT_RAND_BACKOFF_TEND    "8"          CACHE STRING "Upper limit of client's backoff phase in seconds")
SET(CLIENT_RETRY_COUNT          "3"          CACHE STRING "Client's number of reconnect retries")
SET(CLIENT_JOB_REQUEST_SEC      "30"         CACHE STRING "Time in seconds a client tries to get work for (to reduce client/server communication frequency)")
SET(CLIENT_JOB_INITIAL          "1"          CACHE STRING "Initial amount of jobs to request")
SET(CLIENT_JOB_LIMIT            "1000"       CACHE STRING "How many jobs can a client ask for")

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/FailConfig.hpp.in
               ${CMAKE_CURRENT_BINARY_DIR}/FailConfig.hpp)
