From 4429521b158cd66e8b309fd781612eb913300b17 Mon Sep 17 00:00:00 2001 From: andwati Date: Sun, 19 Oct 2025 20:42:42 +0300 Subject: [PATCH] setup cmake --- CMakeLists.txt | 14 ++++++++++++++ cmake/compiler_warnings.cmake | 6 ++++++ src/CMakeLists.txt | 12 ++++++++++++ main.c => src/cpu.c | 0 src/emulator.c | 0 src/main.c | 0 src/main.h | 0 src/memory.c | 0 8 files changed, 32 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cmake/compiler_warnings.cmake create mode 100644 src/CMakeLists.txt rename main.c => src/cpu.c (100%) create mode 100644 src/emulator.c create mode 100644 src/main.c create mode 100644 src/main.h create mode 100644 src/memory.c diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..180bb87 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.16) +project(mos6502 C) + +set(CMAKE_C_STANDARD 17) +set(CMAKE_C_STANDARD_REQUIRED ON) + +# Output binaries in /build/bin +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +# Add warnings and sanitizer options +include(cmake/compiler_warnings.cmake) + +add_subdirectory(src) +add_subdirectory(tests) diff --git a/cmake/compiler_warnings.cmake b/cmake/compiler_warnings.cmake new file mode 100644 index 0000000..3d9ba7c --- /dev/null +++ b/cmake/compiler_warnings.cmake @@ -0,0 +1,6 @@ +# Custom warnings setup +if (MSVC) + add_compile_options(/W4 /permissive-) +else() + add_compile_options(-Wall -Wextra -Wpedantic -Wshadow -Wconversion -Wsign-conversion) +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..1409df8 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,12 @@ +add_library(mos6502 + cpu.c + memory.c + emulator.c +) + +target_include_directories(mos6502 PUBLIC + ${CMAKE_SOURCE_DIR}/include +) + +add_executable(mos6502_emulator main.c) +target_link_libraries(mos6502_emulator PRIVATE mos6502) diff --git a/main.c b/src/cpu.c similarity index 100% rename from main.c rename to src/cpu.c diff --git a/src/emulator.c b/src/emulator.c new file mode 100644 index 0000000..e69de29 diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..e69de29 diff --git a/src/main.h b/src/main.h new file mode 100644 index 0000000..e69de29 diff --git a/src/memory.c b/src/memory.c new file mode 100644 index 0000000..e69de29