summaryrefslogtreecommitdiff
path: root/nandgame/cpp/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'nandgame/cpp/CMakeLists.txt')
-rw-r--r--nandgame/cpp/CMakeLists.txt39
1 files changed, 39 insertions, 0 deletions
diff --git a/nandgame/cpp/CMakeLists.txt b/nandgame/cpp/CMakeLists.txt
new file mode 100644
index 0000000..6e9a4ab
--- /dev/null
+++ b/nandgame/cpp/CMakeLists.txt
@@ -0,0 +1,39 @@
+cmake_minimum_required(VERSION 3.20)
+
+project(simpc)
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+
+find_package(verilator HINTS $ENV{VERILATOR_ROOT})
+
+find_package(Curses REQUIRED)
+
+if(Curses_FOUND AND NOT TARGET Curses::Curses)
+ add_library(Curses::Curses INTERFACE IMPORTED)
+ set_target_properties(
+ Curses::Curses
+ PROPERTIES
+ INTERFACE_LINK_LIBRARIES "${CURSES_LIBRARIES}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CURSES_INCLUDE_DIRS}"
+ )
+endif()
+
+if (Curses_FOUND)
+ option(USE_NCURSES "Whether to use ncurses as UI instead of flat terminal" TRUE)
+else()
+ message(STATUS "Curses library was not found.")
+endif()
+
+add_executable(Vcomputer Vcomputer__main.cpp disas.cpp simpc_ui.cpp)
+verilate(Vcomputer
+ SOURCES ../computer.sv
+ TOP_MODULE computer
+ TRACE_FST
+ INCLUDE_DIRS ..
+ VERILATOR_ARGS -CFLAGS -I${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+if (USE_NCURSES)
+ target_compile_definitions(Vcomputer PRIVATE NCUR)
+ target_link_libraries(Vcomputer PRIVATE Curses::Curses)
+endif()